【问题标题】:Multiple Choice with fixed options. Dont see the options (Django)具有固定选项的多项选择。看不到选项(Django)
【发布时间】:2013-04-05 18:09:19
【问题描述】:

我对 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 类中指定的选项,但该框完全是空的。如何使用西北、东南、西南等选项填充它?

【问题讨论】:

  • 您的 Zone 模型似乎不完整:它没有字段!
  • 谢谢!我知道了!基本上我需要在 Zone 类中有一个区域名称字段,然后使用我想要的所有选项加载 Zone。

标签: python django model manytomanyfield multiple-choice


【解决方案1】:

这不是它的工作原理。查看 django 文档中的 this definition。这个例子很清楚,但对你来说也是在尝试做一些非常奇怪的事情。

我怀疑您正在尝试为您的选择创建一个单独的模型 - 为此您将使用 modelchoicefieldmodelmultiplechoicefield - 为此您只需将您的区域模型定义为实际模型;你所拥有的根本不是 Django 模型。

此外,“站点”是 django 提供的模型 - 你应该没问题,但如果你也使用 django 提供的身份验证,可能会遇到一些难以诊断的问题。

【讨论】:

    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多