Форма django "исключать" работает, "поля" не
Этот вопрос кажется слишком сложным, поэтому, если я не предоставлю достаточно подробностей, извините. В этом проекте я использую кучу разных вещей, поэтому для подробностей обо всем этом мне понадобится полдня. Если есть что-то конкретное, что поможет вам найти решение, пожалуйста, спросите.
У меня есть представление формы, со сложным конвейером. В моем виде формы я использую ModelFormsetView из дополнительных представлений django. Я полагаю, что ошибка должна быть где-то в этом коде, но если я посмотрю в их коде, на каждом шаге присутствуют как "исключать", так и "поля", и она никогда не пропускает.
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'})