不幸的是,您提供并接受的答案无法回答您的原始问题,因为它不会更新模型。但是,这可以通过另一种方便的方法轻松实现:更新或创建
def create(self, validated_data):
answer, created = Answer.objects.update_or_create(
question=validated_data.get('question', None),
defaults={'answer': validated_data.get('answer', None)})
return answer
Answer
如果question=validated_data['question']
从中获得答案的话,如果不存在一个对象,这将在数据库中创建一个对象validated_data['answer']
。如果已经存在,django会将其answer属性设置为validated_data['answer']
。
正如Nirri的回答所指出的,此函数应位于序列化程序内部。如果使用通用的ListCreateView,它将在发送过帐请求后调用create函数并生成相应的响应。