django - UUIDField 没有属性 uuid4

标签 django python-2.7 django-1.9

这是我的模型

from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
import uuid

class PiO(models.Model): 
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) # surrogate
    person = models.ForeignKey(Person, on_delete=models.PROTECT, max_length=25, blank=True)
    content_type = models.ForeignKey(ContentType, on_delete=models.PROTECT) # for the various organization types
    object_id = models.UUIDField(primary_key=False, default=uuid.uuid4, editable=False) # the uuid of the specific org
    content_object = GenericForeignKey('content_type', 'object_id')

这是我的回溯

AttributeError: 'UUIDField' object has no attribute 'uuid4'.

请注意,这是专门引用 object_id 字段,不是 uuid (pk) 字段。作为测试,我注释掉了 object_id 字段。我没有因为没有 object_id 字段而收到错误,并且检查继续到 12 行以外的新错误。

我用谷歌搜索了确切的短语并得到了

No results found for "AttributeError: 'UUIDField' object has no attribute 'uuid4'".

我所做的看起来与 the docs 一致大部头书。

我错过了什么?通用外键和/或内容类型的存在与它有什么关系吗?

最佳答案

问题是您的模型字段 uuid 与模块 uuid 冲突。

一种选择是重命名您的模型字段,例如:

class PiO(models.Model): 
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    ...

另一种选择是将导入更改为 from uuid import uuid4,并更新默认值以使用 uuid4 而不是 uuid.uuid4 .

from uuid import uuid4

class PiO(models.Model): 
    uuid = models.UUIDField(primary_key=True, default=uuid4, editable=False) # surrogate
    ...
    object_id = models.UUIDField(primary_key=False, default=uuid4, editable=False) # the uuid of the specific org

关于django - UUIDField 没有属性 uuid4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725130/

相关文章:

python - 如何从子类中获取抽象类名

django - 如何在另一个模板语言中使用 Django 模板语言?

python - 在 Python 中计算最多两位小数

python - 如何使用 Python 从 HTTP 响应中获取端口号?

python - 当你在 django 中没有定义 STATICFILES_DIR 时会发生什么?

javascript - 如何仅使用 ember js 将类型 =“number” 设为正数

python - 两条线段(线)之间的角度小于 180

django - Django TextField和CharField正在剥离空格和空白行

C9平台上的Django消息框架问题

django - DRF - 用于查询参数验证的基本 View 集