2013-09-04 2 views
0

Я пытаюсь создать форму, которая представляет собой список автомобилей с одним полем, являющимся BooleanField. Я хочу, чтобы это отображалось в виде формы с флажком BooleanField. Если пользователь проверяет это, тогда BooleanField будет установлен = True, и что-то произойдет, когда произойдет POST, и пользователь будет перенаправлен на следующую страницу.Django CBV form, используя список объектов

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) 

currenly 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

Я закончил с добавлением функции post() к ListView, которая обрабатывает данные формы, но у меня возникли проблемы с перенаправлением без действительного объекта HttpResponse, и я получаю сообщение об ошибке, когда одно из полей не проверяется в форме. Вот дополнительный пост() код, который я добавил до поры до времени:

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

Любые предложения о том, как сделать форму повторной визуализации с сообщ ошибки, если нет коробки не будут проверены?

С благодарностью

Смежные вопросы