Django在temp中显示从multicheckbox保存的数据

2024-10-06 12:15:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个发布选项,所以我用这个

class Article(models.Model):
    publish_options = models.CharField(max_length=50)

现在在我的表单中,我使用了forms.CheckboxSelectMultiple widget。所以我有这个

PUBLISH_VISIBILITY = (
    ('All', 'All'),
    ('Paid-users', 'Paid-users'),
    ('Free Users', 'Free Users'),
    ('Public', 'Public'),
)

class PortalNoteForm(ModelForm):
    publish_options = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=PUBLISH_VISIBILITY)
    class Meta:
        model = Article

现在在我看来,我得到了如下复选框的值

if request.method == 'POST':
    form = PortalNoteForm(request.POST)
    if form.is_valid():
        school_article = form.save(commit=False)
        school_article.publish_options = form.cleaned_data['publish_options']
        school_article.school_creator = admin
        school_article.save()
        return HttpResponseRedirect(reverse('going to somewhere'))
else:
    form = PortalNoteForm()
context = {'form':form, 'notes':notes}

好的,保存publish\u选项的值可以很好的工作,但是作为一个列表,即使您只选择了一个复选框,它的值也是作为一个列表来的。现在的问题是我无法阻止这些publish_options值在django模板中显示为列表。我试过迭代它们,但没有办法。我真的需要帮助。你知道吗


Tags: form列表models选项articleformswidgetpublish
1条回答
网友
1楼 · 发布于 2024-10-06 12:15:11

既然已经有了表单,为什么还要从request.POST获取数据呢?表单应该采用request.POST并将数据转换成更方便的方式供您使用:

你知道吗视图.py你知道吗

def view_func(request):
    form = PortalNoteForm(request.POST or None)
    if form.is_valid():
        options = form.cleaned_data['public_options']
        # now you have options so use it

相关问题 更多 >