首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django中保存选择值?

如何在django中保存选择值?
EN

Stack Overflow用户
提问于 2017-04-12 18:56:32
回答 1查看 1.9K关注 0票数 0

我不再为我的班级设置投票系统了。我使用model-formcreate-view来提供投票表单。我在字段中使用了choices,但我发现create-view只保存复选框的最后一个值,我想将所有选择保存为一个列表。我试图更改form_valid()方法,但我发现我需要迭代所有字段来检查是否有多脉冲选择。这是不灵活的。我想不出其他的解决方案。

我如何才能满足这个要求?我真的是个新手..

提前谢谢。

感谢下面的朋友在我提出问题后这么短的时间内回复我。这是我的代码。

models.py

代码语言:javascript
复制
CHOICES = (('m','Math'),('f','French'),('s','Science'),('l','literature'))
class Poll(models.Model):
     [...]
     subject = models.CharField(max_length = 5,choices = CHOICES, blank=True)
     [...]`

forms.py

代码语言:javascript
复制
class PollForm(forms.ModelForm):
     model = Poll
     fields = [..., 'subject', ...]
     widgets = {'subject':forms.CheckboxSelectMultiple}

views.py

代码语言:javascript
复制
class PollView(CreateView):
     form_class = PollForm
     template_name = 'poll.html'

学生可以选择他们想要的科目。

EN

回答 1

Stack Overflow用户

发布于 2017-04-12 19:53:52

似乎你需要转换你的模型。如果你能提供一个你正在使用的结构的样本,那将会很有帮助。不过,还是让我们试着解决你的问题。首先,您需要确定选项只不过是一个多对多的字段。以这种方式将其保存在数据库中应该会更容易一些。让我们试着给用户举一个有选择的例子:

代码语言:javascript
复制
class Choices(models.Model):
  description = models.CharField(max_length=100)

class UserProfile(models.Model):
  user = models.ForeignKey(User, blank=True, unique=True, verbose_name='profile_user')
  choices = models.ManyToManyField(Choices)
  def __unicode__(self):
    return self.name

现在,如果您想创建一个默认表单,您可以简单地执行以下操作:

代码语言:javascript
复制
class ProfileForm(forms.ModelForm):
  Meta:
    model = UserProfile

现在是您的主视图。您可以对其进行编辑,并将其呈现为您的用例要求的任何形式:

代码语言:javascript
复制
if request.method=='POST':
  form = ProfileForm(request.POST)
  if form.is_valid():
    profile = form.save(commit=False)
    profile.user = request.user
    #Implement this as a pre-save so that you can add additional value
    profile.save()
else:
  form = ProfileForm()

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43367626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档