【发布时间】:2016-12-22 13:24:35
【问题描述】:
我在做什么? 我正在对一个简单的应用程序进行培训,在该应用程序中,人们可以订购披萨并选择他的配料,一旦提交表单,它就会在模板文件中显示提交的查询。
有什么问题? 我很难在模板文件的表单中显示选中的复选框。
这是我的文件:
models.py
class PickedDatas(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
class Picked(models.Model):
name = models.CharField(max_length=255)
picked = models.ManyToManyField(PickedDatas, blank=True)
forms.py
class CustomChoiceField(forms.ModelMultipleChoiceField):
def label_from_instance(self, obj):
return mark_safe('%s' % (obj.name))
class SomeForm(forms.ModelForm):
class Meta:
model = Picked
fields = ['name', 'picked']
picked = CustomChoiceField(queryset=PickedDatas.objects.all(), widget=forms.CheckboxSelectMultiple())
views.py
def some_view(request):
if request.method == 'POST':
form = SomeForm(request.POST)
if form.is_valid():
...
else:
form = SomeForm
return render(request, 'features.html', {'form':form, 'picked':Picked.objects.all()})
至于模板文件,我使用 for 循环来显示 Picked 模型数据。
我怎样才能实现我想要做的事情?
编辑
这里是模板文件features.html
<h2>Enter your name and choose your pizza toppings</h2>
<form method='post'>
{% csrf_token %}
{{ form.as_p }}
<input type='submit' value='submit'>
</form>
{% for p in picked %}
<h2>Pizza For : <strong>{{ p.name }}</strong></h2>
<p>{{ p.picked }}</p>
{% endfor %}
它给了我这个 {{ p.picked }} :pizza.PickedDatas.None
【问题讨论】:
-
既然您的问题是关于模板的,您不应该显示该模板吗?
-
@DanielRoseman 这里是模板文件,我只是没有放它,因为我不知道该怎么做才能访问选定的复选框值
标签: python django django-forms