Django的REST框架:从相关目的ModelSerializer添加字段(Django REST

2019-10-20 04:33发布

我试图让属于相关的对象是从ModelSerializer可读可写的一个领域。 我有一个模型Group

class Group(models.Model):
    ...
    name = models.CharField(max_length=128)
    def get_language(self):
        line = self.line_set.all()[0]
        return line.language
    ...

和相应的串行:

class GroupSerializer(serializers.ModelSerializer):
    language = serializers.CharField(source='get_language')

    class Meta:
        model = Group
        fields = ('id', 'name', 'language')
        lookup_field= 'pk'

Group模式是关系到Line模型,其中language领域的生活:

class Line(models.Model):
    ...
    language = models.CharField(max_length=24)
    groups = models.ManyToManyField(Group, blank=True, null=True)
    ...

我试图揭露Line.language集团API在阅读和写作 。 我已经使用CharField如上试过了,但是当我去发布一个新的模式,我得到这个错误:

TypeError at /AO/s/v2/group/

'get_language' is an invalid keyword argument for this function

我也想过尝试定制相关的领域和实施from_native,但是这需要一个查询集在这里是不相关的。

提前致谢。

文章来源: Django REST Framework: Add field from related object to ModelSerializer