私は次のように見える二つのモデルがあります:フィルタリングされた入れ子の関係はDjangoフレームワーク休憩
class Subject(models.Model):
subject_code = models.CharField(max_length=12, unique=True)
name = models.CharField(max_length=100)
dept_code = models.CharField(max_length=6)
と...私は私が取得するように私のシリアライズを作成している
class Subject_assessment(models.Model):
subject_code = models.ForeignKey(Subject, related_name='sub_assessments')
year = models.CharField(max_length=4)
name = models.CharField(max_length=50)
を被験者は、その被験者に関連する評価も取得します。私はこれを達成するために、次のシリアライザを使用しています:
class AssessmentsSerializer(serializers.ModelSerializer):
class Meta:
model = Subject_assessment
fields = (
"subject_code", "year", "name"
)
class SubjectSerializer(serializers.ModelSerializer):
sub_assessments = AssessmentsSerializer(many=True)
class Meta:
model = Subject
fields = (
"subject_code", "name", "dept_code",
"sub_assessments"
)
予想通り、それは私にこのような結果与えるので、このコードは完璧に動作します:
{
"subject_code":"ECR2243",
"name":"Statistics",
"dept_code":"Stats",
"sub_assessments":[
{
"subject_code":"ECR2243",
"year":"2017",
"name":"Test 1"
},
{
"subject_code":"ECR2243",
"year":"2016",
"name":"Test 1"
}
]
}
私の問題は、私だけのための評価を取得したいということですが特定の年たとえば、を対象年として渡した場合、私は現在取得中のようにの評価を取得したくありません。
これを達成するために誰でも自分のコードをどのように構造化することができますか?前もって感謝します。
編集1 次のように私のviews.pyは以下のとおりです。
class SubjectViewSet(viewsets.ModelViewSet):
serializer_class = SubjectSerializer
lookup_field = 'subject_code'
def get_queryset(self):
qry_subject_code = self.request.GET.get('subject_code')
retrieved_sub = Subject.objects.filter(subject_code=qry_subject_code)
return retrieved_sub
あなたはview.py – marin
チェックhttp://www.django-rest-framework.org/api-guide/serializers/#additional-keyword-argumentsとのご質問を展開することができます。それはあなたのシリアライザに余分なパラメータを渡す方法の詳細を持っています。これは、ソリューションを構築するのに役立ちます。 –
@marin私は自分のviews.pyを追加しました – Tatenda