【发布时间】:2016-03-31 18:26:41
【问题描述】:
我有两个想要关联的模型:用户和组。 每个用户都属于一个组。我尝试通过在 get_or_create() 中使用来创建默认用户:
group = models.ForeignKey(Group.objects.get_or_create(name="Free")[0])
但它会引发以下错误:
(fields.E300) 字段定义了与模型“组”的关系,该模型要么未安装,要么是抽象的。
我可以做些什么来解决这个问题?
每个用户都必须有一个非空组值。所以我读过这个 get_or_create() 方法。但我也看到它可以返回多个对象......我不希望它发生。我想过创建一个唯一的名称参数,但有更好的解决方案吗?
你能帮帮我吗?感谢您的帮助。
【问题讨论】:
-
解释错误 - 不在函数内的代码,例如您问题中的行,在 Python 加载您的
models.py文件后立即执行。这发生在 Django 进程启动的早期,当时 Django 在每个INSTALLED_APPS中查找 models.py 文件并导入它。问题是您还不知道还导入了哪些其他模型。这里的错误是因为Group模型(来自django.auth.models)还没有被导入,所以就好像它不存在一样(还)。 -
正如其他人在答案中显示的那样,您可以将
Group.objects.get_or_create(name="Free")[0]放在一个函数中,这样它就不会立即执行,Django 只会在需要知道该值时才调用该函数。此时,您项目中的所有模型以及 Django 自己的模型都将被导入并且可以正常工作