【问题标题】:Django: Form ModelMultipleChoiceField with annotated querysetDjango:使用带注释的查询集形成 ModelMultipleChoiceField
【发布时间】:2019-12-11 08:47:13
【问题描述】:

我正在尝试在表单中创建多项选择字段。我想注释一些值,而不是使用完整的查询集。

注释

productos_incluir = ProductosBase.objects\
    .filter((Q(region__region__icontains="Argentina") | Q(region__region__icontains="Todas")) & Q(estatus_contenido__id__gt=2))\
    .values("marca__marca", "producto", "packaging").annotate(variantes=Sum("producto"))\
    .order_by("marca__marca", "producto", "packaging")

表单域

productos = forms.ModelMultipleChoiceField(
    widget=forms.CheckboxSelectMultiple, queryset=productos_incluir, required=False)

观点

<div>{{ filter_form.productos }}</div>

结果

我在视图中显示了列表,但我在复选框旁边看到了“标签”,如下所示:

{'marca__marca': 'Cramer', 'producto': 'Cutter - Shark', '包装': 'Bolsa 个体','变体':0.0}

我的愿望

我想要的是能够在没有字段信息的情况下显示标签。我想这与注释时查询集类型的变化有关,但我找不到如何显示这一点。

克莱默 |切刀 - Shark Bolsa |个人

提前致谢!

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    如果我正确理解你的问题,也许这就是你想要的:

    您的查询集提供字典,因此您必须使用 .items 对其进行迭代

    {% for key, value in your_dict.items %}
       {{ key }} = {{ value }}
    {% endfor %}
    

    所以在你的情况下:

    <p>
    {% for key, value in filter_form.productos.items %}
       {{ value }} {% if not forloop.last %}|{% endif %} 
    {% endfor %}
    </p>
    

    【讨论】:

      猜你喜欢
      • 2020-05-14
      • 2011-04-08
      • 2019-12-30
      • 2016-08-17
      • 1970-01-01
      • 2014-10-26
      • 2018-06-15
      • 2018-12-08
      • 1970-01-01
      相关资源
      最近更新 更多