Используйте MultipleChoiceField для Integerfield в форме - PullRequest
0 голосов
/ 09 июня 2018

Ситуация

У меня есть класс модели с целочисленным полем (= scored_place_number).

Я хочу использовать, чтобы выбрать 1, 2 или 3 для поля, для которого я устанавливаю поле формы как

forms.MultipleChoiceField # set it to IntegerField

в форме.

Проблема

Форма отображается нормально, но когда форма отправляется нажатием на кнопку отправки, django отображает ошибку.

Enter a list of values

Она выиграла, когда я не указал формы. MultipleChoiceField, так что я догадываюсьчто-то не так с объединением целочисленного поля с MultipleChoiceField.

Вопрос

Как я могу использовать формы. НесколькоChoiceField для IntegerField модели?


Код

Модель

class ComparisonScore(models.Model):
    comparison   = models.ForeignKey(Comparison, on_delete=models.CASCADE, null=True)
    first_place  = models.ForeignKey(Place, related_name="scored_place",   on_delete=models.CASCADE, null=True)
    second_place = models.ForeignKey(Place, related_name="unscored_place", on_delete=models.CASCADE, null=True)
    scored_place_number = models.IntegerField(null=True)

Форма

class ComparisonScoreForm(forms.ModelForm):
    class Meta:
        model = ComparisonScore
        fields = '__all__'

    scored_place_number = forms.MultipleChoiceField(
        required=True,
        widget=forms.RadioSelect,
        choices=(
            ('neither', 0),
            ('first_place',  1),
            ('second_place', 2)
        )
    )

Вид

class CreateComparisonScoreView(CreateView):
    model = ComparisonScore
    form_class = ComparisonScoreForm
    success_url = reverse_lazy('comparison:index')

1 Ответ

0 голосов
/ 09 июня 2018

Переопределите первые элементы в ваших кортежах как Integer, это первые элементы, которые определяют тип поля:

scored_place_number = forms.ChoiceField(
    required=True,
    widget=forms.RadioSelect,
    choices=(
        (0,'neither',),
        (1,'first_place'),
        (2,'second_place')
    )
)
...