0

我正在尝试创建一个表单,该表单是汽车列表,其中一个字段是 BooleanField。我希望它以 BooleanField 为复选框的形式出现。如果用户选中此项,则 BooleanField 将设置为 = True,并且当 POST 发生并且用户被重定向到下一页时会发生某些事情。

模型.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>

视图.py

class Email(ListView):
    model = Car 
    template_name = 'cars/email.html'

建议?

4

1 回答 1

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

如果没有选中任何框,有关如何使用错误消息重新呈现表单的任何建议?

谢谢

于 2013-09-05T03:02:50.093 回答