请原谅标题。我不太确定如何在不显示的情况下问这个问题。
在django我有两个模特。
#serializers.py
class VisitsSerializer(serializers.ModelSerializer):
class Meta:
model = visits
fields=("id","person","date")
然后是restapi的序列化器。
{id:1,person:1,visitdate:11/23/17}
当API返回字典时,它看起来像这样。
{id:1,person:{id:1,name:foo,nickname:bar},visitdate:11/23/17}
有没有办法让API返回与id为1的人相关联的实际值?像这样。
{{1}}
答案 0 :(得分:2)
尝试为People创建一个序列化程序类,然后将其添加到您的访问序列化程序中:
people = PeopleSerializer(read_only = True)
然后将它(人)添加到Meta类中的字段,只是一个建议,尝试将其作为外键而不是OnetoOne关系
答案 1 :(得分:1)
您可以使用嵌套关系执行此操作。这是一个例子:
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = people
fields = ('name', 'nickname')
class VisitsSerializer(serializers.ModelSerializer):
person = PersonSerializer(read_only=True)
class Meta:
model = visits
fields = ("id", "person", "date")
有关嵌套序列化程序的文档为here。
答案 2 :(得分:0)
对应的序列化器如下:
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = people
class VisitsSerializer(serializers.ModelSerializer):
person = serializers.SerializerMethodField()
class Meta:
model = visits
fields = ('id', 'person', 'date')
def get_person(self, obj):
return PersonSerializer(obj.person).data