Форма Джанго. Перезаписать поле модели

#django-forms

Вопрос:

У меня есть Model

Модель

 from django.conf.global_settings import LANGUAGES

class Book(models.Model):
    title = models.CharField(max_length=120)
    language = models.CharField(max_length=56, choices=LANGUAGES, blank=True)
 

И Form

форма

 class SearchForm(forms.ModelForm):

    class Meta:
        model = Book
        fields = ["title", "language"]
 

Я использую crispy для визуализации формы, и проблема в том, что я получаю label и required унаследовал от Book модели. Поэтому мне нужно каким- max_length то образом наследовать поля модели формы и установить новое labels значение.

МОЙ ПОДХОД

 class SearchForm(forms.ModelForm):
    title = forms.CharField(
        widget=forms.TextInput(attrs={"placeholder": "Title"}), required=False, label=""
    ) 

    language = forms.CharField(
        widget=forms.TextInput(attrs={"placeholder": "Language"}), label=""
    )

    class Meta:
        model = Book
        fields = ["title","language"]
 

Теперь нет labels и title не требуется, но нет ограничений по длине названия и выбору ЯЗЫКОВ, унаследованных от Book модели.

Как это решить?

Ответ №1:

Через несколько секунд после публикации мне в голову пришла идея.

 class Meta:
    model = Book
    fields = ["title", "language"]
    labels = {
        "title": "",
        "language": ""
    }

    widgets = {
        'title': forms.TextInput(attrs={'placeholder': 'Title'}),
        'language': forms.Select(attrs={'option': 'Language'}),
    }
 

Теперь единственный вопрос, который у меня есть, — как установить первое значение для language поля. На данный момент это справедливо ------------- .