У меня есть несколько моделей, в том числе пользовательский, например:
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()
apps.py:
class StackConfig(AppConfig):
name = 'stack'
Может быть, кто-нибудь сталкивался с этим когда-либо или просто знает решение, как избавиться от этой ошибки?