1 回答
TA贡献1852条经验 获得超7个赞
您依靠此处的字符串方法将外键作为人类可读的名称传递。但是,您的下拉菜单正确传递了 ID。我想您也将此序列化程序用于 RetrieveApiView,因此您可以通过一种简单的方法在详细信息视图中内联类别。
要解决这个更新问题,请使用第二个序列化程序进行更新:
class JobUpdateSerializer(serializers.ModelSerializer):
category = serializers.PrimaryKeyRelatedField(source='job_category')
class Meta:
model = Job
fields =['id','title','category']
如果你想保留一个序列化程序,那么你需要做更多的工作来修复前端,因为你的有效载荷将嵌套,但你可以同时访问 id 和 name(通过主键更新更安全和更清晰,因为它不受限制国际化,例如):
class JobSerializer(serializers.ModelSerializer):
category = JobCategorySerializer(source='job_category')
class Meta:
model = Job
fields =['id','title','category']
输出将是:
{
"id": 1,
"title": "dog",
"category": {
"id": 2,
"title": "animal"
}
}
添加回答
举报