Django error no such table: auth_group when running makemigrations
Когда я запускаю python manage.py makemigrations
он выдает ошибку:
Я обнаружил, что проблема была в одном из моих views.py
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from .forms import LoginForm, SignUpForm
from django.contrib.auth.models import Group # error
from apps.utils import unauthenticated_user
# create groups
compute, created = Group.objects.get_or_create(name='compute') # Error
search, created = Group.objects.get_or_create(name='search') # error
@unauthenticated_user
def login_view(request):
form = LoginForm(request.POST or None)
msg = None
if request.method == "POST":
...
Если я закомментирую строки, отмеченные ошибкой комментария, а затем запущу миграции, все работает отлично. Но этот обходной путь не подходит для развертывания в продакшн, есть ли способ исправить это?
Эти две строки из вашего стектрейса ошибок показывают, что вы импортируете представления в ваш urls.py
File "/home/smoke/Documents/wsl_dev/testing/genelookup/apps/authentication/urls.py", line 7, in <module>
from .views import login_view, register_user
File "/home/smoke/Documents/wsl_dev/testing/genelookup/apps/authentication/views.py", line 14, in <module>
compute, created = Group.objects.get_or_create(name='compute')
В вашем файле views.py вы импортируете модель Group. Это обычная проблема порядка импорта для приложений django. Когда приложение запускается, оно сначала проходит через ваш urls.py перед загрузкой моделей, и из-за имеющихся у вас операторов импорта вы загружаете модели до того, как они зарегистрированы.
Вместо того, чтобы располагать эти строки на views.py, попробуйте переместить их в функции, где они нужны. Это должно решить проблему.
# create groups
compute, created = Group.objects.get_or_create(name='compute') # Error
search, created = Group.objects.get_or_create(name='search') # error