我正在尝试用数据库中的值填充两个<input type="text">
字段,并使用默认的django表单。
我尝试使用查询设置它,但它在启动时获取值,并且在更改值为DB后不会从DB获取它。
我的表单如下:
s_size = forms.IntegerField(initial=Sizes.objects.get(id=1).small)
m_size = forms.IntegerField(initial=Sizes.objects.get(id=1).medium)
任何帮助将不胜感激。
答案 0 :(得分:1)
您应该从视图中传递初始数据,如in the documentation所述:
class MyForm(forms.Form):
s_size = forms.IntegerField(i)
m_size = forms.IntegerField()
...
def my_view(request):
s_size_value = Sizes.objects.get(id=1).small
m_size_value = Sizes.objects.get(id=1).medium
form = MyForm(initial={'s_size': s_size_value, 'm_size': m_size_value})
答案 1 :(得分:0)
您需要为每个请求创建表单类。
def my_form_factory():
class my_form(forms.Form):
s_size = forms.IntegerField(initial=Sizes.objects.get(id=1).small)
m_size = forms.IntegerField(initial=Sizes.objects.get(id=1).medium)
...
return my_form()
def my_view(request):
form=my_form_factory()
其他解决方案 - 通过self.fields字典更新表单__init__()
方法中的表单字段:
class my_form(forms.Form):
__init__(*args, **kwargs):
super(my_form, self).__init__(*args, **kwargs)
self.fields['s_size']=forms.IntegerField(initial=Sizes.objects.get(id=1).small)
self.fields['m_size']=forms.IntegerField(initial=Sizes.objects.get(id=1).medium)