这个问题似乎太麻烦了,所以如果我没有提供足够的细节,我很抱歉。我在这个项目中使用了很多不同的东西,所以要提供所有这些细节需要我半天时间。如果有特定的东西可以帮助您定位解决方案,请询问。
我有一个带有复杂管道的表单集视图。在我的表单视图中,我使用来自django extra views的ModelFormsetView。我想错误一定在某个代码中,但是如果我查看他们的代码,它在每一步都有“排除”和“字段”,并且永远不会遗漏一个。
fields = ('name', 'toggle_on', )
代替
exclude = ('created', 'modified', )
它总是包括“创建”和“修改”。如果我确实排除,它总是有效的。django 文档说使用“字段”而不是“排除”。
我知道在这样的管道中还有很多其他变量,但是由于将其从字段更改为排除可以解决它,因此表单一定有问题。
另外我应该提到分配是一个称为类别的多态模型的子类,所以这就是我必须处理“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'})