在我的模型中,我有“州”和“国家”。一个国家可以有多个州。
PK 1 的 HTTP GET 状态:
{
"id": 1,
"url": "http://test.com/states/1/",
"name": "Ohio",
"country": "http://test.com/countries/2/"
}
我喜欢在上面的表示中返回国家/地区的超链接相关字段。然而,它迫使我在更新状态时发布超链接 URL,这对客户来说可能很麻烦。我宁愿只发布国家/地区的主键,如下所示:
HTTP 放置/发布:
{
"id": 1,
"url": "http://test.com/states/1/",
"name": "Ohio",
"country": 2
}
有没有一种优雅的方法来做到这一点?
作为参考,以下是其他组件:
模型.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
序列化器.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']