Как добавить необходимый атрибут?
Я хочу добавить атрибут required
в поле product_title. Как я могу это сделать?
class add_product_info(forms.ModelForm):
product_desc = RichTextField()
class Meta:
model = Products
fields = ('product_title')
labels = {'product_title':'Title'}
widgets = {
'product_title':forms.TextInput(attrs={'class':'form-control', 'style':'font-size:13px;'})
}
Точно так же, как вы добавили атрибут style
или class
:
class add_product_info(forms.ModelForm):
product_desc = RichTextField()
class Meta:
model = Products
fields = ('product_title')
labels = {'product_title':'Title'}
widgets = {
'product_title':forms.TextInput(attrs={'class':'form-control', 'style':'font-size:13px;', 'required': True})
}
Вы можете слегка манипулировать существующими полями в методе __init__
. Таким образом, вы можете автоматически добавить этот атрибут.
class BaseForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for bound_field in self:
if hasattr(bound_field, "field") and bound_field.field.required:
bound_field.field.widget.attrs["required"] = "required"
Используйте required
в спецификациях полей. Это также будет обеспечено на уровне формы, так что форма Django будет отклонять форму, если поле не заполнено:
class ProductInfoForm(forms.ModelForm):
product_desc = RichTextField(required=True)
class Meta:
model = Products
fields = ('product_title',)
labels = {'product_title':'Title'}
widgets = {
'product_title':forms.TextInput(attrs={'class':'form-control', 'style':'font-size:13px;'})
}
Примечание: Формы в Django пишутся в PascalCase, а не snake_case, поэтому вы можете переименовать модель из
вadd_product_info
ProductInfoForm
.
если вы хотите добавить в свой шаблон, вы можете использовать django widget tweaks
{% load widget_tweaks %}
<!-- add 2 extra css classes to field element -->
{{ form.title|append_attr:"class:css_class_1 css_class_2" }}