Python 带有额外字段的Django rest框架序列化程序
我有一个django应用程序,我在其中使用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
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
中。医生是这么说的反正我没试过。