我正在尝试创建一个表单,其中包含一个字段为BooleanField的汽车列表。我希望它作为一个表单出现,BooleanField是一个复选框。如果用户检查了这个,那么BooleanField将被设置为True,并且当发生POST并且用户被重定向到下一页时会发生一些事情。
model.py:
class Car(models.Model):
year = models.IntegerField()
make = models.CharField(max_length=30)
model = models.CharField(max_length=30)
send = models.BooleanField(default=False)
目前 email.html 如下所示:
<form action="" method="post">{% csrf_token %}
{% for car in object_list %}
<input type="checkbox" name="car" id="car{{ forloop.counter }}" value="{{ car.id }}">
<label for="car{{ forloop.counter }}">{{ car.year }} {{ car.make }} {{ car.model }}</label><br>
{% endfor %}
<input type="submit" value="Preview">
</form>
views.py
class Email(ListView):
model = Car
template_name = 'cars/email.html'
建议?
答案 0 :(得分:0)
我最终向处理表单数据的post()
添加了ListView
函数,但是我在没有有效的HttpResponse对象的情况下重定向时出错,并且当其中一个框没有时出现错误检查表格。这是我暂时添加的附加post()代码:
def post(self, request, *args, **kwargs):
cars = Car.objects.all() # initially reset "self.send" field == False
for i in range(len(cars)):
cars[i].send = False
cars[i].save()
cars = Car.objects.filter(id__in=request.POST.getlist('car'))
for i in cars:
i.send = True
i.save()
return HttpResponseRedirect(reverse('cars:email_preview'))
如果没有选中框,如何使用错误消息重新呈现表单的任何建议?
由于