<p>我对我之前的解决方案很满意,但我决定再看一次,我想我有另一个解决方案,完全符合你的要求。</p>
<p>基本上,您需要创建自己的自定义字段,并覆盖<code>to_representation</code>方法:</p>
<pre><code>class CarpoolField(serializers.PrimaryKeyRelatedField):
def to_representation(self, value):
pk = super(CarpoolField, self).to_representation(value)
try:
item = ParentArrival.objects.get(pk=pk)
serializer = CarpoolSerializer(item)
return serializer.data
except ParentArrival.DoesNotExist:
return None
def get_choices(self, cutoff=None):
queryset = self.get_queryset()
if queryset is None:
return {}
return OrderedDict([(item.id, str(item)) for item in queryset])
class ParentArrivalSerializer(serializers.HyperlinkedModelSerializer):
carpool = CarpoolField(queryset=Carpool.objects.all())
class Meta:
model = ParentArrival
</code></pre>
<p>这将允许您使用</p>
<pre><code>{
"carpool": 10
}
</code></pre>
<p>得到:</p>
<pre><code>{
"carpool": {
"url": "http://localhost:8000/api/school-building-carpools/10/"
"name": "Name of the carpool",
...
}
}
</code></pre>