1

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

我有一个带有复杂管道的表单集视图。在我的表单视图中,我使用来自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'})
4

0 回答 0