Множественный выбор с фиксированными параметрами. Не вижу вариантов (Джанго)

Я очень новичок в Django, и я пытаюсь сделать так, чтобы я мог выбрать несколько вариантов для поля, но, похоже, у меня проблемы с этим.

Вот упрощенная версия моей модели для сайта

class Zone(models.Model): 
    zone = (
        ('NE','Northeast'),
        ('SE','Southeast'),
        ('SW','Southwest'),
        ('MW','Midwest'),
        ('CN','Canada'),
    )

class Site(models.Model):

    region = models.ManyToManyField(Zone)
    state = models.CharField(max_length = 30)
    ...


class SiteForm(ModelForm): 
    class Meta: 
        model = Site

Теперь зон больше, чем я показываю здесь, и потенциально это означает, что сайт может иметь несколько зон одновременно.

Простая функция просмотра:

def add_site(request): 
    if request.method == 'POST':
        form = SiteForm(request.POST)
        if form.is_valid():
            profile = form.save(commit=False) 
            profile.user = request.user 
            profile.save()
        else:
            form = SiteForm()

    return render(request, 'index.html', {'form': form,})

Насколько я понимаю, как только форма появится на веб-странице, мне должно быть представлено поле с вариантами выбора, которые я указал в классе Zone, но поле совершенно пусто. Как заполнить его такими вариантами, как Северо-Запад, Юго-Восток, Юго-Запад и т. д.?


person Rufat M    schedule 05.04.2013    source источник
comment
Ваша модель Zone кажется неполной: в ней нет полей!   -  person Gareth Rees    schedule 05.04.2013
comment
Спасибо! Я понял! в основном мне нужно было иметь поле для имени зоны в классе Zone, а затем загружать Zone со всеми параметрами, которые я хотел.   -  person Rufat M    schedule 05.04.2013


Ответы (1)


Это не совсем то, как это работает. Ознакомьтесь с этим определением. в документации джанго. Пример довольно понятен, но вы также пытаетесь сделать что-то действительно странное.

Я подозреваю, что вы пытались создать отдельную модель для своих вариантов — для этого вы использовали бы поле выбора модели или modelmultiplechoicefield — для этого вы просто определите свою модель Zone как реальную модель; то, что у вас есть, вовсе не модель Django.

Кроме того, «Сайт» — это модель, предоставленная django — все должно быть в порядке, но вы можете столкнуться с некоторыми трудными для диагностики проблемами, если вы также используете авторизацию, предоставленную django.

person tsalaroth    schedule 05.04.2013