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 中加载数据。
我在我网站的管理部分加载了数据,现在它运行良好。
我阅读了以下主题: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 中加载数据。 我在我网站的管理部分加载了数据,现在它运行良好。