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
Вернуться на верх