Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有额外字段的Django rest框架序列化程序_Python_Django_Serialization_Django Rest Framework - Fatal编程技术网

Python 带有额外字段的Django rest框架序列化程序

Python 带有额外字段的Django rest框架序列化程序,python,django,serialization,django-rest-framework,Python,Django,Serialization,Django Rest Framework,我有一个django应用程序,我在其中使用django Rest框架 我有一个模型如下: 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

我有一个django应用程序,我在其中使用django Rest框架

我有一个模型如下:

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'''})
我将序列化程序定义如下:

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'''})
在我看来,我有一个疑问如下:

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\u name
的额外字段。但是我不能再在结果对象上使用序列化程序,因为它不会在api中引入
middle\u name


如何修改序列化程序以获得
中间名称?

只需将该字段作为普通字段添加到序列化程序中即可

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

我相信您甚至不需要定义,您应该能够将其添加到
Meta
中。医生是这么说的反正我没试过。