#django #django-forms
#django #django-forms
Вопрос:
Если я добавлю поле unit_price в SupplierForm, это отразится на моем шаблоне и добавит атрибут класса, но добавит обе формы. Я хочу переопределить форму записи только для unit_price. как я могу это сделать.
class SupplierForm(forms.ModelForm):
# unit_price = forms.FloatField(widget=forms.TextInput(
# attrs={
# 'class':'product_price',
# }
# ))
# VAT = forms.FloatField(widget=forms.TextInput(
# attrs={
# 'class':'product_vat',
# }
# ))
class Meta:
model = Supplier
exclude = ['uploaded_by', 'approved_by','unit_price']
labels = {
"payment_due_date": "Payment Due Date / Paid Date"
}
help_texts = {
'invoice_date': '<b>Click on arrow for calendar</b>',
'payment_due_date': '<b>Click on arrow for calendar</b>',
}
widgets = {
'invoice_date': DateInput(format="%d %b %Y"),
'payment_due_date':DateInput(),
}
# I have added here unit_price field for add class attribute in this field but there is no reflect on template
class EnteriesForm(ModelForm):
unit_price = forms.FloatField(widget=forms.TextInput(
attrs={
'class':'product_price',
}
))
class Meta:
model = Enteries
exclude = ()
help_texts = {
'unit_price': '<b>Click on arrow for calendar</b>',
}
EnteriesFormSet = inlineformset_factory(Supplier, Enteries,
form=SupplierForm,exclude=['uploaded_by'],extra=1)
Комментарии:
1. Вы
EnteriesFormSet
используетеSupplierForm
, а неEntriesForm
, поэтому любые изменения, внесенные вEntriesForm
, не будут отображаться2. Привет, #Карл Брубейкер спасибо за любезный ответ, не могли бы вы рассказать, как можно сделать то, что я хочу сделать?
Ответ №1:
Вы можете найти его здесь, но вы просто измените свой form
. И как только вы объявите form
, вам больше не нужно использовать fields
or exclude
при объявлении formset
, потому что все это должно быть установлено в вашем form
class EnteriesForm(ModelForm):
unit_price = forms.FloatField(widget=forms.TextInput(
attrs={
'class':'product_price',
}
))
class Meta:
model = Enteries
exclude = ()
help_texts = {
'unit_price': '<b>Click on arrow for calendar</b>',
}
EnteriesFormSet = inlineformset_factory(
Supplier,
Enteries,
# this is where you select what form you want to use:
form=EntriesForm,
# 'uploaded_by' is not even apart of this form.
# You should remove this.
# exclude=['uploaded_by'],
# 'extra': default is '1', so you don't really need this.
# extra=1
)
Вам действительно следует вернуться и прочитать всю информацию о formsets
. Наследование является formset
-> modelformset
-> inlineformset
, поэтому все, что относится к formset
, относится к inlineformset
.
Комментарии:
1. Привет, #Карл Брубейкер, большое спасибо за это решение, оно отлично работает. Большое спасибо за любезную помощь.