Флажки не отображаются в ModelForm - PullRequest
0 голосов
/ 12 апреля 2019

Я создал модель бургера, которая может иметь дополнения и начинки на бургере. Поэтому я создал 2 дополнительных класса, названных Topping и Extra, которые имеют выбор для этих классов. Однако, когда я запускаю программу, флажки Topping и Extra не появляются

Я попытался добавить начинки и дополнения в класс бургеров и получил флажки, но они создали проблему при отправке формы, когда флажки были отмечены. Поэтому я попытался создать классы nex и сослаться на них в отношении ManyToMany через класс Burger

это мой код model.py:

BURGER_CHOICES = (("AFBB", "Aurion's Famous Beef Burger"), ("AIPB", 
"Aurion's Infamous Pork Burger"), ("AULB", "Aurion's Undiscovered Lamb 
Burger"), ("POG", "Pureed Otter Giblets"))
BUN_CHOICES = (("WHITE","White Bread"), ("RYE","Rye"), ("TPOODLE", "Teacup 
Poodles"), ("AFOSSIL","Ammonite Fossils"))
TOPPING_CHOICES = (("CHEESE", "Cheese", ), ("LETTUCE", "Lettuce"), 
("TOMATOE", "Tomatoe"), ("ONION", "Onion"), ("WSHAVE", "Wood Shavings"))
SAUCES_CHOICES = (("OZTS", "Our Zesty Barbaque Sauce"), ("SEZBS", "Someone 
Elses Zesty Barbaque Sauce"), ("VS", "Varmint Squeezings"))
EXTRAS_CHOICES = (("P", "Pinapple"), ("SG", "Soylent Green"), ("SB", 
"Soylent Blue"), ("MWS", "More Wood Shavings"))


class Burger(models.Model):
    burger = models.CharField(max_length=50,choices=BURGER_CHOICES )
    bun = models.CharField(max_length=50, choices=BUN_CHOICES)
    toppings = models.ManyToManyField('Topping')
    sauces = models.CharField(max_length=60, choices=SAUCES_CHOICES)
    extras = models.ManyToManyField('Extra')

    def __str__(self):
        return self.burger

class Topping(models.Model):
    topping = models.CharField(blank=True, max_length=60, 
choices=TOPPING_CHOICES)

    def __str__(self):
        return self.topping

class Extra(models.Model):
    extra = models.CharField(blank=True, max_length=60, 
choices=EXTRAS_CHOICES)

    def __str__(self):
        return self.extra


class BurgerForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(BurgerForm, self).__init__(*args, **kwargs)
        self.fields['toppings'].widget = forms.CheckboxSelectMultiple()
        for field_name in self.fields:
            field = self.fields.get(field_name)
            if field and isinstance(field , forms.TypedChoiceField):
                field.choices = field.choices[1:]
        self.fields['extras'].widget = forms.CheckboxSelectMultiple()

    class Meta:
        model = Burger
        fields = ['burger', 'bun', 'toppings', 'sauces', 'extras']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...