StE*_*rMi 1 django django-rest-framework
我有一个像这样的简单序列化器:
class CategoryCreationSerializer(serializers.ModelSerializer):
class Meta:
model = Category
Run Code Online (Sandbox Code Playgroud)
类别有一个 id 字段(Django 主键),我不明白为什么序列化器不更新它。
场景:我有一个具有给定类别的 BlogPost。我正在使用不同的类别(已在数据库中创建)更新 BlogPost。因此,POST 请求将包含所有 BlogPost 信息以及带有更新后 ID 的新类别 JSON 对象:
{
"id": 1,
"title": "My first blog post",
"category": {
"id": 3,
"name": "Techology"
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我这样做时:
category_data = data.get('category')
if category_data is not None:
category_serializer = CategoryCreationSerializer(data=category_data)
if category_serializer.is_valid():
blog_post.category = category_serializer.object
Run Code Online (Sandbox Code Playgroud)
内部类别标题将更新,但 id 字段将为 NONE。你能解释一下为什么吗?
干杯,埃马努埃莱。
默认情况下,idDjango REST Framework 自动生成的字段是只读的。因此,将始终为空,如果尚未附加,id它将尝试创建一个新的。Category
您可以通过将自己的id字段添加到非只读的序列化器来覆盖此设置。
class CategoryCreationSerializer(serializers.ModelSerializer):
id = serializers.IntegerField()
class Meta:
model = Category
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4273 次 |
| 最近记录: |