Rub*_*bal 5 django rest django-rest-framework
我遇到的情况是模型具有带有详细信息的外键。例如 有两种模式
class Person(models):
country = models.ForeignKey(Country)
class Country(models):
name = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
假设已经预先创建了国家。现在,我要为这些API Person采取只country Id在POST/PUT请求,但返回而不是只Id的那个国家的细节。
Request
{
"id": 1,
"country": 9
}
Response
{
"id": 1,
"country": {
"id": 9,
"name": "Some Country"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Django Rest Framework。(我可以编写id同时包含读写API或整个国家对象的序列化器)
您可以CountryField为此和用户to_representation方法编写自定义字段以返回对象详细信息:
class CountryDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Country
fields = ('id', 'name')
class CountryField(serializers.PrimaryKeyRelatedField):
def to_representation(self, value):
country = models.Barcode.objects.get(pk=value.pk)
serializer = CountryDetailSerializer(country)
return serializer.data
def get_queryset(self):
return Country.objects.all()
Run Code Online (Sandbox Code Playgroud)
并在 Person 序列化器中使用它:
class PersonSerializer(serializers.ModelSerializer):
country = CountryField()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
617 次 |
| 最近记录: |