【发布时间】:2014-05-22 09:21:44
【问题描述】:
我正在尝试更改 DRF 序列化程序中的模型字段名称,如 SQL 中的别名。我尝试了不同的方法,但都没有成功。
models.py
class Park(models.Model):
name = models.CharField(max_length=256)
alternate_name = models.CharField(max_length=256, blank=True)
objects = models.GeoManager()
class Meta:
db_table = u'p_park'
def __unicode__(self):
return '%s' % self.name
def alias_alternate_name(self):
return self.alternate_name
serializers.py
class ParkSerializer(serializers.ModelSerializer):
location = serializers.Field(source='alias_alternate_name')
#location = serializers.SerializerMethodField(source='alias_alternate_name')
#alternate_name as location
class Meta:
model = Park
fields = ('id', 'name', 'location')
我也尝试在 Django Queryset 中添加别名,但无法更改。
更新
这是我面临的例外
/ViewName/ 'module' 对象的 AttributeError 没有属性 'Field'
我该怎么做?
【问题讨论】:
-
您是否使用了
serializers.SerializerMethodField方法的正确实现?我的意思是:serializers.SerializerMethodField('get_location')和def get_location(self, obj): ... -
我们能看到
serializers.py的导入吗? -
将对问题投反对票,因为 OP 接受了部分错误且令人困惑的答案,而不是下面更好的答案...
标签: django django-rest-framework