在 Django Rest Framework 中,可以使用 serializer 中的 create()
和 update()
方法来保存对象。在保存对象之前,可以先检查对象是否已经存在。以下是一个简单的示例代码:
from rest_framework import serializers
from myapp.models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
def create(self, validated_data):
# 检查对象是否已经存在
obj, created = MyModel.objects.get_or_create(**validated_data)
if created:
return obj
else:
raise serializers.ValidationError("对象已经存在。")
def update(self, instance, validated_data):
# 检查对象是否已经存在
for attr, value in validated_data.items():
setattr(instance, attr, value)
obj, created = MyModel.objects.get_or_create(**instance.__dict__)
if created:
return obj
else:
raise serializers.ValidationError("对象已经存在。")
在 create()
和 update()
方法中,使用 get_or_create()
方法在数据库中查找对象。如果找到对象,则返回已经存在的对象。如果没有找到对象,则创建一个新对象。可以使用 created
变量来判断对象是否已经存在,并相应地返回或引发异常。