Django forms.ChoiceField() 我忽略了一些东西

Django forms.ChoiceField() I'm overlooking something

可能我犯了一些初学者错误。我正在尝试让 forms.ChoiceField() 工作。用户应该能够从下拉列表中 select 以便连续 select 1、2、3 或 4 个收集器。 当我 运行 代码时,用户可以 select 从下拉列表中进行选择,但是 number_collectors_per_row 变量未设置为适当的整数值。

我定义choices.py如下:

COLLECTORS_PER_ROW_CHOICES = (
    (1, 'one collector'),
    (2, 'two collectors'),
    (3, 'three collectors'),
    (4, 'four collectors')
)

系统模型定义如下:

from .choices import *

class System(models.Model):
    project     = models.ForeignKey('solgeo.Project', related_name='systems', on_delete=models.CASCADE)
    system_name = models.CharField(max_length=200)
    number_collector_rows = models.IntegerField(default=1)
    number_collectors_per_row = models.IntegerField(choices = COLLECTORS_PER_ROW_CHOICES)

表格定义如下:

from .choices import *

class SystemForm(forms.ModelForm):

    number_collectors_per_row = forms.ChoiceField(required=True, choices = COLLECTORS_PER_ROW_CHOICES)

    class Meta:
        model = System
        fields = [
            'system_name',
            'number_collector_rows'
        ]

SystemUpdateView定义如下:

class SystemUpdateView(LoginRequiredMixin, UpdateView):
    template_name = 'system/detail-update.html'
    form_class = SystemForm

    def get_object(self):
        return System.objects.get(id=self.kwargs['pk_system'])

    def get_context_data(self, *args, **kwargs):
        context = super(SystemUpdateView, self).get_context_data(*args, **kwargs)
        context['title'] = 'Update System'
        return context

    def get_form_kwargs(self):
        kwargs = super(SystemUpdateView, self).get_form_kwargs()
        return kwargs

希望有人能帮助我,在此先感谢。

尝试将 number_collectors_per_row 添加到表单的 Meta.fields

class SystemForm(forms.ModelForm):
    class Meta:
        model = System
        fields = [
            'system_name',
            'number_collector_rows',
            'number_collectors_per_row',
        ]

请注意,由于您在表单中使用与模型相同的选项,因此您不必重新定义表单中的字段。