如何在 django rest 框架中使用外键进行计数

这是我的models.py


class Language(models.Model):

    language_id     = models.BigAutoField(primary_key=True)

    language_name   = models.CharField(max_length=255)

    created_on      = models.DateTimeField(auto_now=True)

    latest_build_on = models.DateTimeField(auto_now_add=True)

    latest_version  = models.DecimalField(max_digits=5, decimal_places=2)

    company         = models.OneToOneField('Company',on_delete=models.CASCADE,related_name='language')


    def __str__(self):

        return self.language_name


class Frameworks(models.Model):

    framework_id    = models.BigAutoField(primary_key=True)

    framework_name  = models.CharField(max_length=255)

    framework_logo  = models.FileField()

    created_on      = models.DateTimeField(auto_now=True)

    latest_build_on = models.DateTimeField(auto_now_add=True)

    latest_version  = models.DecimalField(max_digits=5, decimal_places=2)

    language        = models.ForeignKey('Language',on_delete=models.CASCADE,related_name='frameworks')


    def __str__(self):

        return self.framework_name


class Technologies(models.Model):

    technology_id   = models.BigAutoField(primary_key=True)

    technology_name = models.CharField(max_length=255)

    description     = models.TextField()

    language        = models.ManyToManyField('Language',related_name='technology')


    def __str__(self):

         return self.technology_name

这是 serializers.py


class GetLanguageSerializer(serializers.ModelSerializer):

    technology = serializers.StringRelatedField(many=True)

    frameworks = serializers.StringRelatedField(many=True)

    class Meta:

        model = Language

        fields = ('language_name','created_on','latest_build_on','latest_version','company','technology','frameworks')

        depth = 1


class LanguageSerializer(serializers.ModelSerializer):

    class Meta:

        model = Language

        fields = ('language_name','created_on','latest_build_on','latest_version','company')


慕莱坞森
浏览 185回答 1
1回答

开心每一天1111

SerializerMethodField()在您的序列化程序中使用class GetLanguageSerializer(serializers.ModelSerializer):    technology = serializers.StringRelatedField(many=True)    frameworks = serializers.StringRelatedField(many=True)    total_technology = serializers.SerializerMethodField(read_only=True)    toatl_frameworks = serializers.SerializerMethodField(read_only=True)    def get_toatl_frameworks(self, language):        return language.frameworks.count()    def get_total_technology(self, language):        return language.technology.count() # change 'technology' with corresponding "related_name" value    class Meta:        model = Language        fields = (other_fileds, 'total_technology', 'toatl_frameworks')        depth = 1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python