【发布时间】:2017-06-28 15:43:23
【问题描述】:
我有两个模型,如下所示:
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"
}
]
}
我的问题是我只想检索特定年份的评估。例如,如果我通过 2017 作为感兴趣的年份,我不希望像现在这样检索 2016 的评估。
任何人都可以帮助我如何构建我的代码以完成此任务。提前谢谢你。
编辑 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 扩展你的问题吗
-
检查django-rest-framework.org/api-guide/serializers/…。它详细介绍了如何将额外参数传递给您的序列化程序。它可以帮助您构建解决方案。
-
@marin 我已经添加了我的views.py
标签: django django-rest-framework