固定选项的多项选择。没有看到选项(Django)

问题描述:

我对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

这并不完全如此。在django文档中查看this definition。这个例子非常清楚,但对于你也在尝试做一些非常奇怪的事情。

我怀疑你试图为你的选择创建一个单独的模型 - 要做到这一点,你会使用modelchoicefieldmodelmultiplechoicefield - 为此,您只需将Zone模型定义为实际模型;你有什么不是一个Django模型。

此外,“网站”是一个Django提供的模型 - 你应该没问题,但如果你也使用django的贡献验证,你可以遇到一些难以诊断的问题。