我想从POST获取下一个数据:
[{'id': 1, 'number_of_product': 3, 'is_checked': on}, {'id': 2, 'number_of_product': 1, 'is_checked': off}]
,
现在我有这个了:
'dishes': ['2', '2', '3', '4', '3', '2'], 'number_of_dish': ['2', '3', '1', '1', '1', '1'], 'checkbox': ['on', 'on']
class Dish(models.Model):
"""Dish model"""
name = models.CharField(max_length=50, blank=False, null=False)
category = models.ForeignKey(
Category,
on_delete=models.CASCADE
)
price = models.DecimalField(max_digits=6, decimal_places=2, null=False)
image = models.ImageField(upload_to='dishes/', blank=True, null=True)
created_at = models.DateField(auto_now_add=True)
updated_at = models.DateField(auto_now=True)
class OrderForm(forms.ModelForm):
"""Order creating form"""
checkbox = forms.BooleanField(required=False)
dishes = forms.ModelMultipleChoiceField(queryset=Dish.objects.all())
number_of_dish = forms.IntegerField(
initial=1, min_value=1, label="Number: "
)
class Meta:
model = Order
fields = ('date', 'dishes', 'number_of_dish')
widgets = {
'date': DateInput(
attrs={
'class': 'form-control'
})
}
class HomeView(LoginRequiredMixin, CreateView):
"""Home view with order creating form"""
template_name = 'pages/home.html'
form_class = OrderForm
success_url = reverse_lazy('pages:home')
def post(self, request):
# TODO: [{'id': 1, 'number_of_product': 3, 'is_checked': on}, {'id': 2, 'number_of_product': 1, 'is_checked': off}]
print(request.POST)
return HttpResponseRedirect(self.success_url)
我的模板页面:
<form action="" method="post">
{% csrf_token %}
{% for dish in form.dishes %}
{{ dish }}
{{ form.number_of_dish | as_crispy_field }}
{{ form.checkbox }}
{% endfor %}
<button type="submit" class="btn btn-primary">Order</button>
</form>