我在使用Django创建表单时遇到了这个问题。
class DetailForm(forms.Form):
row_id = 2
def __init__(self, *args, **kwargs):
global row_id
row_id = kwargs.pop('r_id')
super(DetailForm, self).__init__(*args, **kwargs)
row=Prewash.objects.get(id=row_id)
id = forms.CharField(label='ID',initial=row_id, widget=forms.TextInput(attrs={'readonly':'readonly'}))
在 init ()中,正在更新全局变量row_id。但是当我尝试从db中检索值时,它不会反映在最后一行中。
我需要一种方法来保留我想在构造函数中设置的变量的值(不使用实例或方法)。
答案 0 :(得分:0)
在python类中,我们使用对象属性或静态属性。 如果你想要访问对象属性,你必须使用
self.<attribtute_name>
如果您想要访问静态属性,我们使用
<<ClassName>>.<<attribute_name>>
答案 1 :(得分:0)
如果您想根据表单的上下文更改字段属性,可以通过访问和更新class DetailForm(forms.Form):
id = forms.CharField(label='ID', widget=forms.TextInput(attrs={'readonly':'readonly'}))
def __init__(self, *args, **kwargs):
row_id = kwargs.pop('r_id', 2)
super(DetailForm, self).__init__(*args, **kwargs)
self.fields['id'].initial = row_id
函数中的特定字段来实现。
这样的事情应该有效:
{{1}}