【发布时间】:2019-01-06 14:09:34
【问题描述】:
我想在输出 json 中多次序列化一个相关字段。第一个应该包含相关对象的pk,第二个表示应该是超链接。有什么花哨的方法吗?我知道SerializerMethodField,但我觉得它不优雅。
我的模型:
class Person(models.Model):
first_name = models.CharField()
...
class Order(models.Model):
title = models.CharField()
person = models.ForeignKey(Person, related_name='orders')
我想要什么:
像这样序列化我的 Order 模型:
{
"title": "Alice in wonderland",
"person": 1, # represents persons's primary key
"person_url": "/person-detail/1"
}
我尝试了什么/我的序列化程序:
class OrderSerializer(serializers.ModelSerializer):
person = serializers.IntegerField()
person_url = serializers.HyperlinkedRelatedField(
view_name='myapp:user-profile',
lookup_field='pk'
)
class Meta:
model = Order
fields = ['title', 'person', 'person_url']
read_only_fields = ('__all__',)
但在这种情况下,Django 在逻辑上抱怨数据库中缺少 person_url 字段。如何进行?
【问题讨论】:
标签: django django-rest-framework django-serializer