2

私はdjangoとmongoengineを使用しています。 これは、.save()メソッドを使用して新しく作成されたインスタンスを保存しようとすると、何度もエラーが発生します。最初にモデルインスタンスを作成することはできましたが、その後、 は、ここに私の文書構造です:djangoとmongoengineを使用したNotUniqueError

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') 

、ここで作っていますPOSTリクエストです:

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 }) 

私はどこを教えhere.Please立ち往生していますが私はdjango.Anyの助けを借りているので間違っていた。どんな助けも高く評価されるだろう。

ヨーヨーが機能としてデフォルトを設定する必要

答えて

1

: 括弧削除してみてください:

uuid = fields.UUIDField(default=uuid.uuid4) 
#          ^^^ 

uuid = fields.UUIDField(default=uuid.uuid4()) 
#           ^^^ 

を、明示的にUUIDフィールドを宣言し、シリアライザにしてみてください:

class ClientSerializer(mongoserializers.DocumentSerializer): 
    uuid = serializers.UUIDField() 
+0

私はこれをやってみましたが、違いはありません。返信ありがとうございました。 –

+0

あなたの 'request.data'を表示できますか?質問に追加してください –

+0

{u'contactEmail ':u'[email protected]'、u'contactPhone ':u'7878787878'、u'name ':u'bournc'、u'contactPerson ':u'singh '} これは私のrequest.dataです –

0

ジャンゴ基本的にリレーショナルバックエンド(SQLなど)に依存するWebフレームワークです。すべてのモデルを保存します。一方、MongoEngineはMongoDBのORMラッパーです。 Djangoは独自のORM型ラッパーをモデルの形で持っています。

MongoEngineでDjangoを使用するには、Django-nonrelを試してみてください。あるいは、djongoでMongoDBにリレーショナルDjangoを接続してみてください。

MongoEngineでのDjangoモデルの使用は、常に機能しません。あるいは、MongoEngine ORMを使用してモデルを保存する方が良いでしょう。

関連する問題