Как добавить уникального пользователя в форму из модели, имеющей общий внешний ключ?
Я получаю следующую ошибку:
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)"
)