在我的模型中,我有「狀態」和「國家/地區」。一個國家可以有許多國家。Django REST框架:動態序列化關係字段 - POST pk但GET超鏈接
HTTP GET與PK 1狀態:
{
"id": 1,
"url": "http://test.com/states/1/",
"name": "Ohio",
"country": "http://test.com/countries/2/"
}
我喜歡在表示返回一個超鏈接相關的字段爲國家的上方。但是,它強制我在更新狀態時POST超鏈接URL,這對客戶端來說可能很麻煩。我寧願只發布該國的主鍵,就像這樣:
HTTP PUT/POST:
{
"id": 1,
"url": "http://test.com/states/1/",
"name": "Ohio",
"country": 2
}
有一種優雅的方式來做到這一點?
僅供參考,這裏有其他成分:
Models.py
class State(models.Model):
name = models.TextField()
country = models.ForeignKey(Country, related_name='states', null=True)
class Country(models.Model):
name = models.TextField()
Views.py
class StateViewSet(ExpandModelViewSet):
queryset = State.objects.all()
serializer_class = StateSerializer
class CountryViewSet(ExpandModelViewSet):
queryset = Country.objects.all()
serializer_class = CountrySerializer
Serializers.py
class StateSerializer(ExpandModelSerializer):
country = serializers.HyperlinkedRelatedField(view_name='country-detail', queryset=Country.objects.all(), allow_null=True)
class Meta:
model = State
fields = ('id', 'url', 'name', 'country')
class CountrySerializer(ExpandModelSerializer):
class Meta:
model = Country
fields = ['id', 'url', 'name']
您可以添加視圖的代碼嗎? – Newtt