Django REST框架:将相关对象的字段添加到ModelSerializer

时间:2014-05-23 06:25:30

标签: django many-to-many django-rest-framework serializer

我正在尝试允许属于相关对象的字段可从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)
    ...

我正在尝试在组API中公开Line.language以阅读并编写。我上面尝试过使用CharField,但是当我发布一个新模型时,我收到了这个错误:

TypeError at /AO/s/v2/group/

'get_language' is an invalid keyword argument for this function

我还想过尝试自定义相关字段并实现from_native,但这需要一个与此无关的查询集。

提前致谢。

0 个答案:

没有答案