Django:db值更改后重新加载表单数据

时间:2015-04-21 13:31:00

标签: python django

我有一个Django表单,可以生成输入" number"具有仓库项的数据库值的字段。处理完后,所有输入数据都存储在临时数据库中。因此,主仓库数据库的值(如产品数量)每次都会发生变化。主要问题是 完成所有这些步骤后,表单不会更新(例如:最大输入值)。只有在重新启动服务器时才可以使用更新表单。

我的表单类定义如下: (对于每次迭代,循环创建一个新变量(输入字段名称)并定义最大和最小输入值。)

class StorehouseItems(forms.Form):
       items = Storehouse.objects.all()

       for key in items:
            locals()[key.id] = forms.IntegerField(label=key.name+"<br />(max "+str(key.amount)+" "+key.prefix+")",
                                          min_value=0, max_value=key.amount, required=False)

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您应该在表单的__init__()方法中添加字段:

class StorehouseItems(forms.Form):

    def __init__(self, *args, **kwargs):
        super(StorehouseItems, self).__init__(*args, **kwargs)
        for key in Storehouse.objects.all():
            field = str(key.pk)
            label = "%s<br />(max %s%s)" % (key.name, key.amount, key.prefix)
            self.fields[field] = forms.IntegerField(label=label,
                                                    min_value=0, 
                                                    max_value=key.amount,
                                                    required=False)