Я пытаюсь создать форму в Django, которая позволяет пользователю вводить данные для модели, которая связана с другой моделью через ForeignKey. И я написал собственный метод проверки, который будет гарантировать, что все вводимые пользователем данные являются уникальными, но он не работает и идет дальше, чтобы сохранить форму, которая не соответствует моей цели. Я надеюсь, что код дает больше объяснения тому, что я пытаюсь сделать.
forms.py
class ChoiceModelForm(forms.ModelForm):
class Meta:
model = Choice
fields = ['choice_text']
widgets = {
'name': forms.TextInput(attrs={
'class': 'form-control',
})
}
class ChoiceModelFormset(BaseModelFormSet):
def clean(self):
super().clean()
choices = []
for form in self.forms:
choice = form.cleaned_data['choice_text'].upper()
if choice in choices:
raise ValidationError("Choices in a poll must be distinct")
choices.append(choice)
ChoiceFormset = modelformset_factory(
Choice,
form=ChoiceModelForm,
extra=2,
formset=ChoiceModelFormset
)
Вот код для файла models.py
class Choice(models.Model):
poll = models.ForeignKey(Poll, on_delete=models.SET_NULL, null=True)
choice_text = models.CharField(max_length=200)
def __str__(self):
"""String representing the Choice object"""
return self.choice_text
Пользовательская проверка в ChoiceModelFormset
не работает Любая помощь будет оценена.