django相关的模型ID在已验证的\u数据中丢失,即使它存在于请求中
发布时间:2022-06-06 19:52:21 231
相关标签: # springboot
我正在为我的 webapp 使用 Django REST 框架作为后端 API 的 create() 方法。
在这种情况下,我正在尝试创建一个新的 RECIPE,它具有相关模型 STYLE 的外键字段......
尝试通过 ID 将我的新配方记录与现有相关对象关联时遇到问题。
我的序列化程序如下所示:
class StyleSerializer(serializers.ModelSerializer):
http_method_names = ['get']
class Meta:
model = Style
exclude = ()
class RecipeSerializer(serializers.ModelSerializer):
hops = HopAdditionSerializer(many=True, read_only=True)
fermentables = FermentableAdditionSerializer(many=True, read_only=True)
style = StyleSerializer()
yeast = YeastSerializer(read_only=True)
class Meta:
model = Recipe
exclude = ()
def create(self, validated_data):
style_data = validated_data.pop('style')
style = Style.objects.get(pk=style_data.get('id'))
reipce = Recipe.objects.create(**validated_data)
recipe.style = style
recipe.save();
return recipe
您可以看到我正在尝试为新配方对象分配相关的样式对象。
在我对新配方的 POST 请求中,我包含了样式,它是所有相关属性,包括字段ID。我已验证此信息已通过开发控制台在请求中和通过终端日志在 django 视图集中发布。
但是,在我的序列化程序 create() 方法中,ID 值总是从 valid_data.pop('style') 返回的字典对象中丢失。每个其他字段都存在,只是缺少的 ID。
我可以使用名称属性获取样式对象,但我不明白为什么相关样式对象的 ID 会在验证数据中丢失,即使它存在于 POST 中。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报