我正在使用Django 3.2和DRF
我有一个序列化程序,它具有嵌套的序列化程序字段,如
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = [
'id',
'title',
]
class QuestionSerializer(serializers.ModelSerializer):
category = CategorySerializer()
class Meta:
model = Question
fields = [
'category',
'title',
'description'
]
在响应中,数据应该像这样返回
{
"category": {
"id": 4,
"title": "General Knowledge",
"created": "2021-05-23T07:12:14.749571Z",
"modified": "2021-05-23T07:12:14.749639Z"
},
"title": "Where is Delhi?",
"description": ""
}
这很好,但是使用POST方法,我不想为Category
创建嵌套数据,因为这些记录只能从管理面板创建。
但是这些字段是创建Question
记录所必需的。
当在payload中传递类别的id
时,它仍然说需要category
字段。
如何使用对象的id
来分配相关字段,而不是传递所有数据来创建嵌套对象?
4条答案
按热度按时间h7wcgrx31#
试试看
p4tfgftt2#
请尝试添加单独的序列化程序以创建问题:
yyyllmsg3#
您也可以将该字段设置为不需要:
xjreopfe4#
为了使用现有类别创建问题,客户端必须知道
category_id
。在这种情况下,
category
只在GET请求中可见(例如QuestionSerializer(instance).data
)。category_id
可以传递给POST请求。request.data
:创建后的响应(
serializer.data
)将是: