Борьба с отображением данных флажков на странице DetailView - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть форма, в которой при отправке необходимо указать детали, которые я отправил в форму. Я действительно изо всех сил пытаюсь понять, как заставить это отображать данные флажка.

Я прошел через документацию django на DetailForms, но это не очень помогло мне с отображением ManyToManyFields.

Мой шаблон выглядит следующим образом:

<li>{{theBurger.burger}}</li>
<li>{{theBurger.bun}}</li>
{% for toppings in theBurger.toppings.all %}
<li>{{toppings}}</li>
{% empty %}
<p>No toppings!</p>
{% endfor %}
<li>{{theBurger.sauces}}</li>
{% for extras in theBurger.extras.all %}
<li>{{theBurger.extras}}</li>
{% empty%}
<p>No extras!</p>
{% endfor %}

Мой взгляд таков:

class OrderDetailView(DetailView):
    context_object_name = 'theBurger'
    slug_field = 'id'
    model = models.Burger

    def get_context_data(self, **kwargs):
        context = super(OrderDetailView, self).get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context

Я могу заставить страницу отображать всю другую информацию, кроме информации, которая была отправлена ​​с помощью флажков. отправляемый ответ:

<QueryDict: {'csrfmiddlewaretoken': 
['l6Qq7tg89cueHV2Fl6Qq7tg89cueHV2F2WrzrbJ'], 
'burger': ["Aurion's Famous Beef Burger"], 'bun': ['White Bread'], 
'toppings': ['15', '1
6'], 'sauces': ['Our Zesty Barbaque Sauce'], 'Submit': ['Git my food!']}>

Наконец, вот форма:

class BurgerForm(forms.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']

Может кто-нибудь указать, что я сделал не так?

1 Ответ

0 голосов
/ 15 апреля 2019

Блин после вспашки хоть с gazillion google я наткнулся на это:

http://www.joshuakehn.com/2013/6/23/django-m2m-modelform.html

Я пытался удалить:

Commit=False 

от

post = form.save()

в файле forms.py, и теперь он работает. Я потратил много времени на это, поэтому надеюсь, что это поможет кому-то еще.

...