Я разрабатываю форму, которая использует CheckboxSelectMultiple, чтобы позволить пользователю выбирать начинки для пиццы. Topping - это собственный класс с атрибутом name.
class Pizza(models.Model):
menu = models.ForeignKey(Menu, on_delete=models.CASCADE, related_name="pizza")
style = models.ForeignKey(PizzaStyle, on_delete=models.CASCADE)
size = models.ForeignKey(Size, on_delete=models.CASCADE)
is_special = models.BooleanField(default=False)
num_toppings = models.IntegerField()
toppings = models.ManyToManyField(Topping, blank=True)
price = models.DecimalField(max_digits=5, default=0.00, decimal_places=2)
class PizzaForm(ModelForm):
class Meta:
model = Pizza
exclude = ['menu', 'price']
widgets = {
'toppings': CheckboxSelectMultiple,
}
labels = {
'num_toppings': 'Number of Toppings',
'is_special': 'Gluten Free Dough'
}
Форма создает в views.py штраф с правильными метками для каждого Topping. Однако, когда я передаю данные формы на другую страницу (корзину), я могу передать только номер последнего флажка, выбранного в форме. (т.е. если пепперони выбран и является третьим флажком в списке, то request.POST ['toppings'] возвращает 3.
Я пытаюсь сделать что-то подобное в views.py для корзины так, чтобы Я могу сгенерировать список начинки:
toppings = ""
for topping in request.POST['toppings']:
print(topping.label)
toppings = ", ".join(topping)
Я пробовал поискать документацию, но не могу понять мою проблему. Спасибо!