从django rest framework

时间:2017-05-05 09:09:35

标签: serialization django-rest-framework

我有两张桌子

class student(models.Model):
    frist_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)


class subject(models.Model):
    student = models.ForeignKey(student)
    sub_name = models.CharField()

我想要序列化器中的学生列表和科目计数

我的序列化程序

classs SubjectSerializers(serializers.ModelSerializer):
    class Meta:
        model = JobPosting
        fields = ('id','sub_name')

class StudentSerializers(serializers.ModelSerializer):
    sub = SubjectSerializers(source = 'student')
    class Meta:
        model = JobPosting
        fields = ('id','first_name', 'last_name','sub')

我如何为序列化工具中的每个学生获得科目计数,现在我正在制作科目表数据,但我想要像这样计算

"detail": [{
        "id": 680,
        "first_name": "riya",
        "last_name": "tri",
        "subject_count": 5
      }],

1 个答案:

答案 0 :(得分:1)

您可以使用serializer method field

来实现此目的

然后StudentSerializer成为以下内容:

class StudentSerializers(serializers.ModelSerializer):
    sub = SubjectSerializers(source = 'student')
    subject_count = serializers.SerializerMethodField()

    class Meta:
        model = JobPosting
        fields = ('id','first_name', 'last_name','sub')

    def get_subject_count(self, student):
        return Subject.objects.filter(student=student).count()