Есть ли способ проверить динамически вводимые данные, используя formset в django и убедившись, что они различны? - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь создать форму в 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 не работает Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...