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

Django: I can't succeed displaying multiple checkboxes in my template

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

但由于无法成功显示模板中的复选框,我不知何故错过了一些重要的事情。然而,字段名称确实出现在模板中,仅此而已,字段名称之后,它是白色和空白。

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

这是我的 models.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

forms.py

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']

offer.html

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

views.py

    if offerform.is_valid():        
        sent = True
        offer = offerform.save(commit=False)
        offer.publisher = User.objects.get(id=logged_user.id)
        offer.save()
        offerform.save_m2m()
    else:
        print(offerform.errors)

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

ps:您可能想在 RegionChoices 中的 region 字段上执行 unique=True。否则您可能会不小心创建相同区域的重复条目。

好的,我知道我必须在模型 RegionChoices 中加载数据。 我在我网站的管理部分加载了数据,现在它运行良好。