Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 10, 2014 13:31:43

hound
Зарегистрирован: 2014-10-27
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Заполнение SELECT

Добрый день, например, есть потребность на странице выводить select заполненный значениями из БД. Модельную форму использовать не совсем вариант, т.к этот селект будет не в рамках какой-то одной формой. Как можно отобразить?
В шаблон передать значения выборки их БД и там уже циклом перечислять элементы?
<select>
{% for item in items %}
<option value=“item.pk”>item.value</option>
{% endfor %}
</select>

Офлайн

#2 Дек. 11, 2014 20:17:22

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Офлайн

#3 Дек. 12, 2014 18:00:22

hound
Зарегистрирован: 2014-10-27
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Заполнение SELECT

Так, а если не в рамках модельной формы?
Этот селект не будет частью одной формы, значение из него будет обрабатываться javsscript'ом и передавать аяксом уже на сервер.

Офлайн

#4 Дек. 13, 2014 13:07:18

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Заполнение SELECT

А кто говорит про ModelForm?
modelchoicefield - используется для обычных форм.

Офлайн

#5 Дек. 13, 2014 13:26:56

hound
Зарегистрирован: 2014-10-27
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Заполнение SELECT

Т.е без создания формы никак?


    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        
        context['elem'] = forms.ModelChoiceField(queryset = Author.objects.all())
        return context

Если передать в шаблон таким образом, то сам виджет select не отображается.
Я просто думал, что может есть создания select в шаблоне без лишнего создания формы…

Офлайн

#6 Дек. 13, 2014 13:36:42

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Заполнение SELECT

Вы можете не использовать всю форму, а использовать только селект от нее если вам так удобнее.

{{form.my_select_field}}

Офлайн

#7 Дек. 14, 2014 01:32:02

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Заполнение SELECT

Можно вообще без использования формы:

class IndexView(TemplateView):
    template_name = 'TestDjango/index.html'
 
    def get_context_data(self, **kwargs):
        context = super(IndexView, self).get_context_data(**kwargs)
        context.update({
            'my_select': forms.ModelChoiceField(MyModel.objects.all()).widget.render('select_name', None),
        })
        return context

А можно сделать templatetag, который будет выводить этот селект, чтобы каждый рыз не писать это во view.

Отредактировано GreyZmeem (Дек. 14, 2014 01:34:16)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version