Как я создаю форму Django с объектами модели в Избранном виджете?

Скажем, я использую модель Django Site:

class Site(models.Model):
    name = models.CharField(max_length=50)

Мои Стоимости площадки (ключ, значение):

1. Stackoverflow
2. Serverfault
3. Superuser

Я хочу создать форму с виджетом выбора HTML с вышеупомянутыми значениями:

<select>
    <option value="1">Stackoverflow</option>
    <option value="2">Serverfault</option>
    <option value="3">Superuser</option>
</select>

Я думаю о запуске со следующего кода, но это неполно:

class SiteForm(forms.Form):
    site = forms.IntegerField(widget=forms.Select())

Какие-либо идеи, как я могу достигнуть этого с формой Django?

Править

Различные страницы представят различные стоимости площадки. dev страница покажет участки разработки, в то время как страница кулинарии покажет сайты рецепта. Я в основном хочу динамично заполнить выбор виджета на основе представления. Я полагаю, что могу достигнуть этого в данный момент путем ручной генерации HTML в шаблоне.

13
задан Thierry Lam 31 March 2010 в 20:10
поделиться

2 ответа

Думаю, вы ищете ModelChoiceField .

ОБНОВЛЕНИЕ: особенно обратите внимание на аргумент queryset . В представлении, поддерживающем страницу, вы можете изменить QuerySet , который вы предоставляете, на основе любых критериев, которые вас интересуют.

13
ответ дан 1 December 2019 в 21:37
поделиться

Я не тестировал это, но я думаю что-то вроде...

site = forms.IntegerField(
    widget=forms.Select(
        choices=Site.objects.all().values_list('id', 'name')
        )
     )

Edit --

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

(
   (1, 'stackoverflow'),
   (2, 'superuser'),
   (value, name),
)

.values_list вернет именно такой формат, если у вас есть ID и имя/заглавие/что угодно, как показано ниже: .values_list('id', 'name'). Когда форма будет сохранена, значением .site будет id/пк выбранного сайта.

12
ответ дан 1 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: