Skip to main content
 首页 » 编程设计

python之Django:在数据库值更改后重新加载表单数据

2024年10月25日38lyj

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

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

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) 

我做错了什么?

请您参考如下方法:

您应该在表单的 __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)