Django:我无法在模板中显示多个复选框

时间:2015-08-10 17:49:59

标签: django checkbox django-models django-forms django-templates

我阅读了以下主题:Django Multiple Choice Field / Checkbox Select Multiple

但是,由于我无法在模板中显示复选框,因此我错过了一些重要的内容。但是,该字段的名称确实出现在模板中,但在字段名称之后,它全部为白色和空白。

奇怪的是,在我读过的帖子中,作者没有写出元组列表。这就是为什么我认为问题可能在于models.py

这是我的models.py

main

forms.py

from django.db import models
from user.models import User

class RegionChoices(models.Model):
    REGION_CHOICES = (
        ('London', 'Londres'),
        ('Paris', 'Paris'),
        ('Berlin', 'Berlin'),
    )
    region = models.CharField(max_length=30, choices=REGION_CHOICES)

    def __str__(self):
        return self.region    

class Offer(models.Model):
    publisher = models.ForeignKey(User)
    content = models.TextField()
    region_choices = models.ManyToManyField(RegionChoices)

    def __str__(self):
        return self.publisher.username

offer.html

from django import forms
from django.contrib import admin
from django.conf import settings

from offers.models import Offer, RegionChoices

class SendOfferForm(forms.ModelForm):
    region_choices = forms.ModelMultipleChoiceField(queryset=RegionChoices.objects.all(), widget=forms.CheckboxSelectMultiple)
    class Meta:
        model = Offer
        exclude = ['publisher']

views.py

<form action="{% url "send_offer" %}" method='POST' class='sendofferform'>
    {{ form.errors }}
    {{ form.non_field_errors }}
    {% csrf_token %}
    {{ offerform.as_p }}
</form>

2 个答案:

答案 0 :(得分:1)

从您的代码中听起来您想要限制项目可以拥有的区域选择。我认为你应该首先为RegionChoices创建一个管理员。在那里你可以创建你喜欢的RegionChoices入口。如果您不确定如何为模型创建管理界面https://docs.djangoproject.com/en/1.8/ref/contrib/admin/

,请关注django文档

ps:您可能希望在unique=True的{​​{1}}字段上执行region。否则,您可能会意外地创建同一区域的重复条目。

答案 1 :(得分:0)

好的,我意识到我必须在模型RegionChoices中加载数据。 我将数据加载到我网站的管理部分,现在,它完美运行。