我正在保存這樣的模型
if serializer.is_valid():
message = serializer.save(version_info='55')
我正在傳遞一個名為 version_info 的引數,在我的序列化程式中我有以下代碼
class MessageSerializer(serilizer.Serializer):
def create(self, validated_data, **kwargs):
message = Message.objects.create(**validated_data)
return message
version_info引數在 valid_data 字典中,但我想將此 version_info 傳遞給我的Message模型的save 方法,我已經對其進行了自定義,以便在保存訊息時做一些額外的作業,但它給出了這個錯誤:TypeError: Message() got an unexpected keyword引數“version_info”如何傳遞 version_info 引數來保存模型的方法?
uj5u.com熱心網友回復:
使用 context
您可以在構造序列化程式時將其添加到背景關系中,因此:
serializer = MessageSerializer(data=data, context={'version_info': 55})
if serializer.is_valid():
message = serializer.save()
在序列化程式中,您可以使用以下方式訪問背景關系:
class MessageSerializer(serilizer.Serializer):
def create(self, validated_data, **kwargs):
version_info = self.context['version_info']
# do something …
message = Message.objects.create(**validated_data)
return message
彈出元素 validated_data
您仍然呼叫的另一個選項.save(version_info=55)是從經過驗證的資料中彈出資料:
class MessageSerializer(serilizer.Serializer):
def create(self, validated_data, **kwargs):
version_info = validated_data.pop('version_info', None)
# do something …
message = Message.objects.create(**validated_data)
return message
這將回傳None的version_info,如果你不與呼叫它.save(version_info=55)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/406268.html
標籤:
