【问题标题】:Struggling with displaying checkbox data in DetailView page努力在 DetailView 页面中显示复选框数据
【发布时间】:2019-09-05 01:14:36
【问题描述】:

我有一个表单,当我提交时,它需要显示我在表单中提交的详细信息。 我真的很难理解如何让它显示复选框数据。

我浏览了 DetailForms 上的 django 文档,但这并没有真正帮助我了解如何显示 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']

谁能指出我做错了什么?

【问题讨论】:

    标签: django django-class-based-views


    【解决方案1】:

    在浏览了无数个谷歌链接后,我遇到了这个问题:

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

    我试图删除:

    Commit=False 
    

    来自:

    post = form.save()
    

    在 forms.py 文件中,它现在可以工作了。我在这方面浪费了很多时间,所以我希望它对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2022-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2016-03-23
      • 1970-01-01
      相关资源
      最近更新 更多