我是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类中指定的选项,但该框完全为空。如何使用西北,东南,西南等选项填充它?
答案 0 :(得分:1)
这不是它的工作原理。查看django文档中的this definition。这个例子非常清楚,但是你也试图做一些非常奇怪的事情。
我怀疑您正在尝试为您的选择创建一个单独的模型 - 为此,您将使用modelchoicefield或modelmultiplechoicefield - 为此您只需将您的区域模型定义为实际模型;你拥有的不是Django模型。
此外,“网站”是django提供的模型 - 你应该没问题,但是如果你还使用了django贡献的auth,你可能会遇到一些难以诊断的问题。