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

Python Django:在db值更改后重新加载表单数据,python,django,Python,Django,我有一个Django表单,它从带有仓库项的数据库值生成输入“number”字段。处理后,所有输入数据都存储在临时数据库中。因此,主仓库数据库的值(如产品数量)每次都会发生变化。主要问题是 完成所有这些步骤后,表单不会更新(对于exmaple:最大输入值)。仅当服务器重新启动时,才可以更新表单 我的表单类定义如下所示: (对于每个迭代,循环创建一个新变量(输入字段名),并定义最大和最小输入值。) 类项目(forms.Form): items=仓库.objects.all() 对于关键项目: loc

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

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

类项目(forms.Form):
items=仓库.objects.all()
对于关键项目:
locals()[key.id]=forms.IntegerField(label=key.name+“
(max”+str(key.amount)+“+key.prefix+”), 最小值=0,最大值=key.amount,required=False)

我做错了什么?

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

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)
类项目(forms.Form):
定义初始化(self,*args,**kwargs):
超级(项目,自我)。\uuuuu初始值(*args,**kwargs)
用于存储库中的密钥。objects.all():
字段=str(key.pk)
label=“%s
(最大%s%s)”%(key.name、key.amount、key.prefix) self.fields[field]=forms.IntegerField(label=label, 最小值=0, 最大值=关键金额, 必需=错误)
您在处理表单时是否确实保存了数据?这通常是在视图中完成的。另外,您可能应该使用表单集来实现这类功能。它工作得非常好!可爱的逻辑解决方案,非常感谢!(现在我需要思考它是如何工作的……:)
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)