Django使用额外字段

时间:2015-06-16 20:01:10

标签: python django serialization django-rest-framework

我有一个django应用程序,我正在使用Django Rest Framework!

我的模型如下:

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

    def __unicode__(self):
        return u'%s %s' % (self.first_name, self.last_name)

我将序列化程序定义如下:

class AuthorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Author
        fields = ('first_name', 'last_name', 'email')

在我看来,我的查询如下:

author_detail = Author.objects.extra(select={'middle_name':'''SELECT middle_name from MyTable where MyTable.first_name = first_name'''})

根据查询,我将在我的对象middle_name中获得一个额外的字段。但是我不能再对结果对象使用序列化器,因为它不会将middle_name带入api。

如何修改序列化程序以获取middle_name

1 个答案:

答案 0 :(得分:1)

只需将序列化程序中的字段添加为普通字段即可。

class AuthorSerializer(serializers.ModelSerializer):
    middle_name = serializers.CharField()
    class Meta:
        model = Author
        fields = ('first_name', 'last_name', 'middle_name', 'email')