Формы Django: не добавляются атрибуты
Я знаю, что есть много подобных сообщений, но можете ли вы найти опечатку или ошибку в моем коде?
Я добавляю пользовательские классы в свои формы, но когда я проверяю элемент на веб-странице, их нет. То же самое относится и к placeholder.
код
{% csrf_token %}
<div class="col-6">
{{form.name}}
</div>
<div class="col-6">
{{form.surname}}
</div>
from django.core.exceptions import ValidationError
from django.forms import ModelForm
from .models import SearchStats
from django import forms
import re
def isStandardized(value):
if not re.compile(r'^[a-zA-Z ]+$').match(value):
raise ValidationError('Enter only english characters')
return True
class AuthorForm(ModelForm):
name = forms.CharField(validators=[isStandardized])
surname = forms.CharField(validators=[isStandardized])
class Meta:
model = SearchStats
fields = ['name', 'surname', 'author_id', 'amount']
widgets = {
'name': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Name of an author'}),
'surname': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Surname of an author'}),
'author_id': forms.TextInput(attrs={'type':'hidden'}),
'amount': forms.TextInput(attrs={'type':'hidden'})
}
Я думаю, что вы уже указали поля name
и surname
в самом классе, поэтому вы должны использовать встроенные виджеты, а не виджеты Meta, так как они используются для переопределения виджетов по умолчанию, поэтому:
class AuthorForm(ModelForm):
name = forms.CharField(validators=[isStandardized],widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Name of an author'}))
surname = forms.CharField(validators=[isStandardized],widget=forms.TextInput(attrs={'class':'form-control','placeholder':'surname of an author' }))
class Meta:
model = SearchStats
fields = ['name', 'surname', 'author_id', 'amount']
widgets = {
'author_id': forms.TextInput(attrs={'type':'hidden'}),
'amount': forms.TextInput(attrs={'type':'hidden'})
}