我制作了一个表单,它根据传入的参数和存储在数据库中的权重类动态构建。这一切都很好(注意:它不是一个ModelForm,只是一个Form)。在
现在我正在尝试保存用户的响应。如何迭代他们提交的数据以便保存?在
这里有一个类似的问题:Processing dynamic MultipleChoiceField in django
但我不能让它为我工作,因为我的情况稍有不同。我想查看用户在表单中选择的选项按钮的标签,并比较该值,因为它将与数据库中已存储的权重类的值相匹配。表单包含“first_name”和“last_name”等字段,我用于动态生成权重类的代码如下:
def __init__(self, event, *args, **kwargs):
super(EntryForm, self).__init__(*args, **kwargs)
groups = ClassGroup.objects.all()
weight_classes = ClassOrder.objects.filter(event=event).order_by('weight')
current_group = regclasses[0].competition_class.class_group
for weight_class in weight_classes.all():
self.fields['%s' % weight_class.competition_class.class_group.group_name] = forms.ChoiceField(choices=[ (o.id, o.class_name + ": " + o.class_info) for o in weight_class.competition_class.class_group.classes_in_group.all()], widget=forms.RadioSelect(), label=weight_class.competition_class.class_group.group_name, required=False)
这给我的感觉是:
男子重量级别
除了不是动态生成的表单字段。在
它们都是一个无线电选择组的一部分。我尝试使用以下代码处理表单:
^{pr2}$其思想是for循环应该迭代表单中的字段,并检查字段的标签是否与数据库中的权重类相同。如果数据库中的字段和权重类匹配,则会创建一个新条目,其中包含运动员、事件和运动员在表单中选择的权重类。当代码运行时,我得到错误
无法分配“[]”:入门级运动员“”必须是“类”实例。
我的猜测是'field'变量没有引用option按钮的标签。如何让表单处理动态生成的weight类的名称?在
返回一个queryset,但您需要一个Classes实例。在
^{pr2}$会的。在
我在前面已经通过创建一个数组来完成这个任务,这个数组使用动态生成的字段附加到表单上,然后对其进行迭代。在
或者你可以把对象.get(…)在try/except块中:
if语句不起作用的原因是下面的块没有正确缩进。这也可以(注意计数后的括号):
^{pr2}$相关问题 更多 >
编程相关推荐