3

ドキュメントのレコードを追加して、生成された ID を取得したいと考えています。ただし、にTypeError: need one of hex, bytes, bytes_le, fields, or intアクセスしようとするとエラーが発生しますuser_id。このエラーが発生するのはなぜですか?

class User(db.DynamicDocument):
    user_id = db.UUIDField(primary_key=True, required=True, default=uuid.UUID)
    ...

user = User().save()
user_id = user.user_id
File "views.py", line 15, in post
    user = User().save()
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/base/document.py", line 96, in __init__
    setattr(self, key, value)
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/base/document.py", line 188, in __setattr__
    super(BaseDocument, self).__setattr__(name, value)
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/base/fields.py", line 123, in __set__
    value = value()
  File "/usr/lib/python2.7/uuid.py", line 129, in __init__
    raise TypeError('need one of hex, bytes, bytes_le, fields, or int')
TypeError: need one of hex, bytes, bytes_le, fields, or int
4

1 に答える 1

4

エラーは、デフォルト値の ですuser_id。デフォルトを に設定すると、オブジェクトuuid.uuid4が生成されUUIDます。

class User(db.DynamicDocument):
    user_id = db.UUIDField(primary_key=True, required=True, default=uuid.uuid4)
    ...
于 2015-08-29T13:53:26.960 に答える