gpt4 book ai didi

django - 属性错误 : 'Settings' object has no attribute after attempt to make migration

转载 作者:行者123 更新时间:2023-12-05 07:29:35 25 4
gpt4 key购买 nike

我有一些模型,包括这样的自定义用户:

class User(AbstractUser):

image = models.ImageField(upload_to=get_image_path, blank=True, null=True)
objects = NewUserManager()

USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']

def __str__(self):
return self.email

class Meta(AbstractUser.Meta):
swappable = 'stack.User'

在我尝试再添加一个类之前,它与我已有的其他模型一起工作得很好:

class Vote(models.Model):

rate_type = models.BooleanField()
question = models.ForeignKey("Question", related_name='question_rate', on_delete=models.PROTECT)
answer = models.ForeignKey("Answer", related_name='answer_rate', on_delete=models.PROTECT)
user = models.ForeignKey(get_user_model(), on_delete=models.PROTECT)


class Meta:
unique_together = [('question', 'user'), ('answer', 'user'), ]

不幸的是,我在尝试迁移时遇到错误:

Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/home/artem/.local/lib/python3.5/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
utility.execute()
File "/home/artem/.local/lib/python3.5/site-packages/django/core/management/__init__.py", line 365, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/artem/.local/lib/python3.5/site-packages/django/core/management/base.py", line 288, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/artem/.local/lib/python3.5/site-packages/django/core/management/base.py", line 335, in execute
output = self.handle(*args, **options)
File "/home/artem/.local/lib/python3.5/site-packages/django/core/management/commands/makemigrations.py", line 159, in handle
migration_name=self.migration_name,
File "/home/artem/.local/lib/python3.5/site-packages/django/db/migrations/autodetector.py", line 44, in changes
changes = self._detect_changes(convert_apps, graph)
File "/home/artem/.local/lib/python3.5/site-packages/django/db/migrations/autodetector.py", line 192, in _detect_changes
self._build_migration_list(graph)
File "/home/artem/.local/lib/python3.5/site-packages/django/db/migrations/autodetector.py", line 270, in _build_migration_list
resolved_app_label, resolved_object_name = getattr(settings, dep[1]).split('.')
File "/home/artem/.local/lib/python3.5/site-packages/django/conf/__init__.py", line 57, in __getattr__
val = getattr(self._wrapped, name)
AttributeError: 'Settings' object has no attribute 'stack.User'

我对此感到困惑,因为我既没有更改 settings.py 也没有更改任何其他内容。我可以在“投票”类中删除对用户的引用,它再次变得正常,但不幸的是我需要将它保留在这里。同一文件中的大多数其他模型确实通过 ForeignKey 和“get_user_model()”函数对用户类有相同的引用(也许我试图用用户类本身切换它 - 结果相同) - 它的工作方式只是我添加了它们几次迁移前。

django 版本 2.0.2来自 settings.py:

    # Application definition

INSTALLED_APPS = [
'stack.apps.StackConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

AUTH_USER_MODEL = 'stack.User'

wsgi.py:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "StackOverflow.settings")

application = get_wsgi_application()

应用程序.py:

class StackConfig(AppConfig):
name = 'stack'

也许有人遇到过它或者只是知道如何摆脱这个错误的解决方案?

最佳答案

stack 应用应该添加到您的 INSTALLED_APPS 设置中:

INSTALLED_APPS = [
'stack.apps.StackConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'stack',
]

AUTH_USER_MODEL = 'stack.User'

也可以在 ForeignKey 中指定模型,您可以使用 settings.AUTH_USER_MODEL:

from django.conf import settings

user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)

关于django - 属性错误 : 'Settings' object has no attribute <AUTH_USER_MODEL value> after attempt to make migration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52675510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com