我正在使用 django 和 mongoengine。 当我尝试使用 .save() 方法保存新创建的实例时,这是我一次又一次遇到的错误。我第一次能够创建模型实例,但之后任何发布请求都会引发此错误。 这是我的文档结构:
class Client(DynamicDocument):
name = fields.StringField(required=True,max_length=30)
uuid = fields.UUIDField(default=uuid.uuid4())
contactEmail = fields.EmailField(required=True,max_length=30)
contactPhone = fields.StringField(required=True,max_length=30)
contactPerson = fields.StringField(required=True,max_length=30)
class ClientSerializer(mongoserializers.DocumentSerializer):
class Meta:
model = Client
fields = ('id','name','uuid','contactEmail','contactPhone','contactPerson')
这是我发出帖子请求的地方:
def post(self, request, format=None):
serializer = ClientSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
但我发现了错误:
NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error collection: project.client index: UUID_1 dup key: { : null })
我被困在这里。请告诉我哪里出了问题,因为我是 django 新手。任何帮助将不胜感激。
最佳答案
您需要将默认值设置为函数: 尝试删除括号:
uuid = fields.UUIDField(default=uuid.uuid4())
# ^^^
到
uuid = fields.UUIDField(default=uuid.uuid4)
# ^^^
并尝试在序列化器中显式声明 uuid 字段:
class ClientSerializer(mongoserializers.DocumentSerializer):
uuid = serializers.UUIDField()
关于django - 使用 django 和 mongoengine 时出现 NotUniqueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45875779/