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',
]
请注意,由于您在表单中使用与模型相同的选项,因此您不必重新定义表单中的字段。
可能我犯了一些初学者错误。我正在尝试让 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',
]
请注意,由于您在表单中使用与模型相同的选项,因此您不必重新定义表单中的字段。