django形式“排除”作品,“字段”不作

时间:2017-05-18 00:53:33

标签: django django-forms django-model-field

这个问题似乎太麻烦了,所以如果我没有提供足够的细节,我很抱歉。我在这个项目中使用了很多不同的东西,所以提供所有这些的细节需要我半天。如果有特定内容可以帮助您定位解决方案,请询问。

我有一个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'})

0 个答案:

没有答案