Невозможно выполнить запрос "": Должен быть экземпляр "User" в Django 3.2
Я получаю эту ошибку из следующего представления:
from django.shortcuts import render, redirect
from movies import models as movies_models
from django.contrib.auth import get_user_model
User = get_user_model()
def playlists_view(request):
if (not request.user.is_authenticated) or (not request.user.is_staff):
return redirect('Login')
playlists = movies_models.PlayList.objects.filter(created_by=request.user).order_by('-id')
return render(request, 'cpanel/playlists.html', {'playlists': playlists})
Моя модель плейлиста выглядит следующим образом:
но важной частью этой модели является это поле:
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
И я определяю пользователя следующим образом:
from django.contrib.auth import get_user_model
User = get_user_model()
Когда я запускаю приложение django на моем localhost, все в порядке, но на рабочем сервере я получаю эту ошибку :(
) Я попробовал вместо request.user
использовать User.objects.get(username=request.user)
, но получил ту же ошибку в следующей строке:
playlists = movies_models.PlayList.objects.filter(created_by=request.user).order_by('-id')
My User - это простая модель пользователя, которая наследуется от модели AbstractUser.
Спасибо за внимание. :)
Похоже, что вы используете пользовательский класс User
. Убедитесь, что именно он используется в ваших моделях. Как задокументировано в Ссылка на модель User:
Если вы ссылаетесь на
User
непосредственно (например, используя ссылку на него в внешнем ключе), ваш код не будет работать в проектах, где настройкаAUTH_USER_MODEL
была изменена на другую модель пользователя.
Когда вы определяете внешний ключ или отношения "многие ко многим" к пользовательской модели, вы должны указать пользовательскую модель, используя настройку
.AUTH_USER_MODEL
Сначала убедитесь, что вы правильно подставили пользовательский класс пользователя в settings.py и выполнили необходимую миграцию.
...
AUTH_USER_MODEL = 'myapp.MyUser'
...
Затем попробуйте изменить это (предполагая, что User
здесь еще не является результатом get_user_model()
, потому что это не было указано в вставленной модели в вопросе):
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
To:
from django.conf import settings
...
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True)
Ор:
from django.contrib.auth import get_user_model
...
created_by = models.ForeignKey(get_user_model(), on_delete=models.SET_NULL, null=True, blank=True)
Убедитесь, что они правильно мигрируют без сбоев:
python manage.py makemigrations
python manage.py migrate