2013-04-05 285 views
1

我對Django非常陌生,我試圖讓它可以爲一個字段選擇多個選項,但我似乎遇到了問題固定選項的多項選擇。沒有看到選項(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,}) 

這是我的理解是,一旦形式在網頁上,我應該與他的選擇我在區級指定的盒子呈現,但框是完全空。我如何用西北,東南,西南等選擇來填充它?

+1

您的'區域'模型似乎不完整:它沒有字段! – 2013-04-05 18:11:04

+0

謝謝!我知道了!基本上我需要在Zone類中有一個區域名稱的字段,然後使用我想要的所有選項加載Zone。 – 2013-04-05 18:27:24

回答

1

這並不完全如此。在django文檔中查看this definition。這個例子非常清楚,但對於你也在嘗試做一些非常奇怪的事情。

我懷疑你試圖爲你的選擇創建一個單獨的模型 - 要做到這一點,你會使用modelchoicefieldmodelmultiplechoicefield - 爲此,您只需將Zone模型定義爲實際模型;你有什麼不是一個Django模型。

此外,「網站」是一個Django提供的模型 - 你應該沒問題,但如果你也使用django的貢獻驗證,你可以遇到一些難以診斷的問題。