这个问题似乎太麻烦了,所以如果我没有提供足够的细节,我很抱歉。我在这个项目中使用了很多不同的东西,所以提供所有这些的细节需要我半天。如果有特定内容可以帮助您定位解决方案,请询问。
我有一个formset视图,有一个复杂的管道。 在我的表单视图中,我使用 django extra views 中的 ModelFormsetView 。我想错误必须在某个地方的代码中,但如果我查看他们的代码,它在每一步都有“排除”和“字段”,并且永远不会留下一个。
fields = ('name', 'toggle_on', )
而不是
exclude = ('created', 'modified', )
它将始终包含“已创建”和“已修改”。如果我确实排除,它总是有效。 django文档说使用“字段”而不是“排除”。
我知道像这样的管道中有很多其他变量,但是由于从字段中将其更改为要解除它,因此表单出现了问题。
另外我应该提到Allocation是一个名为category的多态模型的子类,所以这就是我必须处理“category_ptr”的原因。
根据要求,我发布了表单代码。
class AllocationFormBudget(FilterDestinationBudget):
start_date = forms.DateField(widget=DateInput(), required=True, initial=date.today())
end_date = forms.DateField(widget=DateInput(), required=False)
class Meta:
model = Allocation
#fields = ('name', 'source_account', 'minimum', 'additional_amount', 'toggle_on', 'broad_category', 'start_date',
# 'match_source_account_period', 'allocation_dates', 'flexible_percent', 'payment_type')
exclude = ('created', 'modified', 'reimbursable_percent', 'category_ptr', 'end_date', 'destination',
'transaction_identifiers', )
def __init__(self, *args, **kwargs):
super(AllocationFormBudget, self).__init__(*args, **kwargs)
self.fields['match_source_account_period'].widget.attrs = {'class': 'Match_Account'}
class FilterDestinationBudget(forms.ModelForm):
name = forms.CharField(widget=forms.TextInput(attrs={'size': '20'}))
minimum = forms.DecimalField(widget=forms.TextInput(attrs={'style': "width: 7em", 'type': 'number', 'step': '0.01'}),
initial=0.00)
additional_amount = forms.DecimalField(widget=forms.TextInput(attrs={'style': "width: 7em", 'type': 'number',
'step': '0.01'}), initial=0.00)
flexible_percent = forms.DecimalField(widget=forms.TextInput(attrs={'style': "width: 7em", 'type': 'number',
'step': '0.01'}), initial=0.00, required=False)
def __init__(self, *args, **kwargs):
super(FilterDestinationBudget, self).__init__(*args, **kwargs)
self.fields['source_account'].widget = forms.HiddenInput()
self.fields['broad_category'].widget.attrs.update({'class': 'BC_Dropdown'})