django modelform 属性 隐藏字段
django modelform property hidden field
我手动将我的表单集显示为 table,每个表单都被循环显示。在每个表单的底部,我都包含隐藏字段,例如:
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
但问题是我还在我的表单中包含属性,例如:
class AllocationForm(forms.ModelForm):
name = forms.CharField(widget=forms.TextInput(attrs={'size': '15'}))
def __init__(self, *args, **kwargs):
super(AllocationForm, self).__init__(*args, **kwargs)
if self.instance:
self.fields['total_budgeted'] = self.instance.total_budgeted()
self.fields['total_budgeted_account_percent'] = self.instance.total_budgeted_account_percent()
self.fields['actual_spent'] = self.instance.actual_spent()
self.fields['actual_spent_account_percent'] = self.instance.actual_spent_account_percent()
self.fields['total_budgeted_category_percent'] = self.instance.total_budgeted_category_percent()
self.fields['actual_spent_category_percent'] = self.instance.actual_spent_category_percent()
class Meta:
model = Allocation
exclude = {'created', 'modified', 'source_account'}
从某种意义上说,这是有效的,我确实看到了正在调用的属性,但是它们显示为空,所以这是另一个问题。
问题是当我在模板中保留隐藏字段时,我会收到诸如 'int' object has no attribute 'get_bound_field' 等错误,具体取决于 return 类型property/method 电话。
我的问题是首先:是否可以检查该字段是否为模板中的属性,然后跳过它?
这可能与我使用 属性 的方式有关,因为实际上每个 属性 都没有显示任何内容(但我看到它回调),所以 second将是关于如何显示属性。
好吧,我正处于问题的下一步,但我已成功生成真实表单字段。代替:
if self.instance:
self.fields['total_budgeted'] = self.instance.total_budgeted()
你可以这样写:
if self.instance:
self.fields['total_budgeted'] = form.CharField(
initial=self.instance.total_budgeted(),
widget=HiddenInput()
)
在这段代码中,你将表单字段实例化为 CharField,你可以使用你想要的表单字段,我通过选择隐藏输入小部件将其隐藏。
我手动将我的表单集显示为 table,每个表单都被循环显示。在每个表单的底部,我都包含隐藏字段,例如:
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
但问题是我还在我的表单中包含属性,例如:
class AllocationForm(forms.ModelForm):
name = forms.CharField(widget=forms.TextInput(attrs={'size': '15'}))
def __init__(self, *args, **kwargs):
super(AllocationForm, self).__init__(*args, **kwargs)
if self.instance:
self.fields['total_budgeted'] = self.instance.total_budgeted()
self.fields['total_budgeted_account_percent'] = self.instance.total_budgeted_account_percent()
self.fields['actual_spent'] = self.instance.actual_spent()
self.fields['actual_spent_account_percent'] = self.instance.actual_spent_account_percent()
self.fields['total_budgeted_category_percent'] = self.instance.total_budgeted_category_percent()
self.fields['actual_spent_category_percent'] = self.instance.actual_spent_category_percent()
class Meta:
model = Allocation
exclude = {'created', 'modified', 'source_account'}
从某种意义上说,这是有效的,我确实看到了正在调用的属性,但是它们显示为空,所以这是另一个问题。
问题是当我在模板中保留隐藏字段时,我会收到诸如 'int' object has no attribute 'get_bound_field' 等错误,具体取决于 return 类型property/method 电话。
我的问题是首先:是否可以检查该字段是否为模板中的属性,然后跳过它? 这可能与我使用 属性 的方式有关,因为实际上每个 属性 都没有显示任何内容(但我看到它回调),所以 second将是关于如何显示属性。
好吧,我正处于问题的下一步,但我已成功生成真实表单字段。代替:
if self.instance:
self.fields['total_budgeted'] = self.instance.total_budgeted()
你可以这样写:
if self.instance:
self.fields['total_budgeted'] = form.CharField(
initial=self.instance.total_budgeted(),
widget=HiddenInput()
)
在这段代码中,你将表单字段实例化为 CharField,你可以使用你想要的表单字段,我通过选择隐藏输入小部件将其隐藏。