Django 3.x - Пользовательское значение по умолчанию для пользовательского выпадающего меню - PullRequest
0 голосов
/ 15 марта 2020

Я сам создаю выпадающее меню выбора категории, чтобы сделать функцию поиска на моем django сайте более упреждающей и отфильтрованной. Пока это работает довольно хорошо, но я не смог выяснить, как я могу изменить значение по умолчанию в раскрывающемся меню, так как в настоящее время отображается «--------», а не что-то вроде «Все» в качестве выбранного по умолчанию значение.

base. html:

<div class="my-custom-dropdown">
   <a>{{ categorysearch_form.category }}</a>
</div>

search_context_processor.py:

def categorysearch_form(request):
    form = SearchForm()
    return {'categorysearch_form': form}

forms.py

class SearchForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['category']

    def __init__(self, *args, **kwargs):
        kwargs.setdefault('label_suffix', '')
        super(SearchForm, self).__init__(*args, **kwargs)
        self.fields['category'].required = False
        self.fields['category'].initial = 'All'

делает smb , есть идеи, как это можно сделать? использование параметра content: в моем css имеет только очень ограниченное преимущество, так как метка «Все» всегда размещается вне фактического поля выбора.

спасибо за чтение:)

Ответы [ 3 ]

2 голосов
/ 15 марта 2020

Пустой выбор отображается как «--------». Чтобы отобразить что-то другое (возможно, «Все») вместо «--------», мы можем добавить empty_label в методе ModelForm s init, как показано ниже -

self.fields['category'].empty_label = "All"

Вы также можете проверить это do c.

0 голосов
/ 15 марта 2020

Если категория является полем выбора в модели Post и одним из вариантов выбора является «Все», то вы можете установить начальное значение категории на «Все», например:

class SearchForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['category']

    def __init__(self, *args, **kwargs):
        kwargs.setdefault('label_suffix', '')
        super(SearchForm, self).__init__(*args, **kwargs)
        self.fields['category'].required = False
        self.fields['category'].initial = 'All'
0 голосов
/ 15 марта 2020

Вы можете добавить начальное значение

в вашей форме

name = forms.CharField(initial='Your name')
...