Почему я не могу сохранить данные формы в базу данных модели?
Когда я пытаюсь сохранить информацию, введенную в форму, я получаю ValueError
:
Cannot assign "<class 'auctions.models.User'>": "Listing.user" must be a "User" instance.
Я думаю, что это может быть связано с тем, что поле модели Listing.user
является внешним ключом между Listing
моделью и User
моделью.
Даже когда я меняю Listing.user = User
на Listing.user = User()
(включает скобки), он возвращает ValueError
:
save() prohibited to prevent data loss due to unsaved related object 'user'.
Как мне добавить, кто является текущим пользователем в поле модели Listing.user
?
models.py:
class User(AbstractUser):
pass
class Listing(models.Model):
...
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
views.py:
def save_new(request):
if request.method == 'POST':
form = NewListing(request.POST)
if form.is_valid():
obj = Listing()
...
obj.user = User # this returned the first ValueError
# obj.user = User() - this returned the second ValueError
obj.save()
return HttpResponseRedirect('/')
можете попробовать это
obj.user = User.objects.get(pk=request.user.id)