Как добавить уникального пользователя в форму из модели, имеющей общий внешний ключ?

Я получаю следующую ошибку:

author = ForeignKey(User, db_column="user") TypeError: init() отсутствует 1 необходимый позиционный аргумент: 'on_delete'

Я пробовал добавить позиционный аргумент в форму, но это не помогло. Я знаю, что с атрибутом on_delete=CASCADING он удалит все объекты, которые имеют ссылки на него. Я знаю, что это проблема формы, но я не могу найти ответа, поэтому и пишу здесь. Любая помощь/руководство будут очень признательны!

models.py

from django.core.validators import MaxValueValidator, MinValueValidator
from django.utils import timezone
from django.db import models
from django.contrib.auth.models import User


class Review(models.Model):
    title = models.CharField('Movie Title', max_length=100)
    rating = models.IntegerField('Personal Rating', validators=[MinValueValidator(1), MaxValueValidator(10)])
    comment = models.TextField('Comment', blank=True)
    datetime_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    # Show table in /admin page
    def __str__(self):
        return self.title

forms.py

from datetime import datetime

from django.contrib.auth.models import User
from django.db.models import ForeignKey
from django.forms import ModelForm
from django import forms

from . import models
from .models import Review


class UploadReview(ModelForm):
    title = forms.CharField()
    rating = forms.IntegerField()
    comment = forms.Textarea()
    datetime_posted = datetime.now()
    author = ForeignKey(User, db_column="user")

    class Meta:
        model = Review
        fields = ['title', 'rating', 'comment']
        exclude = ['datetime_posted', 'author']

Проблема в том, что вы используете ForeginKey в ModelForm.

from django.db.models import ForeignKey
class UploadReview(ModelForm):
     .....
     author = ForeignKey(User, db_column="user")

Это для моделей БД. Для ModelForms следует использовать ModelChoiceField

     author = forms.ModelChoiceField(
          queryset=User.objects.all(),
          empty_label="(Nothing)"
     )
Вернуться на верх