Эй, это моя первая попытка ответить на вопрос! Я новичок ie, но у меня недавно была похожая ошибка. Я полагаю, что это наивный вариант ответа Найджела222, который требует сделать это с миграцией, но, возможно, здесь есть что-то ценное для другого новичка ie, которому нужно более простое решение. Я был под влиянием ответа на этот пост Аймана Аль-Абси, который предполагает, что вам может понадобиться сослаться на этого пользователя по его автоматически сгенерированному первичному ключу.
По умолчанию request.user AnonymousUser, когда не аутентифицирован. Из сообщения об ошибке видно, что AnonymousUser нельзя использовать в качестве значения для вашего внешнего ключа в таблице User. Предлагаемое решение:
from django.contrib.auth.models import User
# Start by creating a user in your User table called something like anon in some kind of initialization method:
tempUser= User.objects.create_user(username="anon", email="none", first_name="none", last_name="none")
tempUser.save()
#when the user is unauthenticated, before calling a method that takes request as a parameter do:
if request.user.is_anonymous:
anonUser = User.objects.get(username='anon')
request.user=User.objects.get(id=anonUser.id)
Еще один комментарий для новичка ie. Я сделал свою собственную таблицу под названием User в models.py. Это стало запутанным. Мне пришлось импортировать его с псевдонимом: from .models import User as my_user_table
Было бы лучше просто назвать его my_user_table для начала.