Формы 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'})
      }
Вернуться на верх