Har*_*man 8 serialization django-rest-framework
我有一个字段country_id和country_name,我想在Django rest Framework中更改这两个字段的名称
现在写我正在收到这些数据
{
"data": [
{
"country_id": 1,
"country_name": "Afghanistan"
},
{
"country_id": 2,
"country_name": "Aland Islands"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我在serializers.py文件中有变化,但对我不起作用
serializers.py
class CountrySerializer(serializers.ModelSerializer):
name = serializers.SerializerMethodField('country_name')
class Meta:
model = Country
fields = ('country_id', 'name')
Run Code Online (Sandbox Code Playgroud)
在模型中
class Country(models.Model):
country_id = models.AutoField(primary_key = True)
country_name = models.CharField(max_length = 128)
class Meta:
db_table = 'countries'
Run Code Online (Sandbox Code Playgroud)
我想要这些数据
{
"data": [
{
"id": 1,
"name": "Afghanistan"
},
{
"id": 2,
"name": "Aland Islands"
}
]
}
Run Code Online (Sandbox Code Playgroud)
得到此错误:/ v1/location/countries /上的AttributeError'CountrySerializer'对象没有属性'country_name'
Jas*_*jal 10
您必须更改"serializers.py"文件
class CountrySerializer(serializers.ModelSerializer):
name = serializers.CharField(source='country_name')
id = serializers.CharField(source='country_id')
class Meta:
model = Country
fields = ('id', 'name')
Run Code Online (Sandbox Code Playgroud)
然后你会得到这样的数据
{
"data": [
{
"id": 1,
"name": "Afghanistan"
},
{
"id": 2,
"name": "Aland Islands"
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3792 次 |
| 最近记录: |