Django ModelMultipleChoiceField:遍历数据

0 投票
1 回答
1327 浏览
提问于 2025-04-16 10:49

我正在尝试显示一个ModelMultipleChoiceField中的数据,已经尝试过遍历这些对象,但结果有点奇怪。谢谢大家的帮助!

{{ chef.meal }} 

渲染结果

[<Meal: Breakfast>, <Meal: Brunch>]

--

{% for i in chef.meal%} {{i}} {% endfor %}

渲染结果

[ < M e a l : B r e a k f a s t > , < M e a l : B r u n c h > ]

这是我设置ModelMultipleChoiceField的方式:

  meal = forms.ModelMultipleChoiceField(
        label=_("What is your best meal?"),
        queryset=Meal.objects.all(),
                                        required=True)

还有Meal模型:

class Meal(models.Model):
  name = models.CharField(max_length=10)

  def __unicode__(self):
    return "%s" % self.name

HttpResponse:

  data = {"profile":profile,
          "chef":chef}
  return render_to_response(template_name,
                            data,
                            context_instance=RequestContext(request))

我把'chef'传递给模板,然后从Chef对象中提取了餐点。

1 个回答

0

你不能在模型里面使用表单字段。相反,你应该在餐点(meal)和厨师(Chef)之间建立一个外键关系。

class Meal(models.Model):
    name = models.CharField(max_length=10)
    chef = models.ForeignKey(Chef)
    def __unicode__(self):
        return "%s" % self.name

现在在模板里面使用

{% for meal in chef.meal_set.all %}
     {{ meal }}
{% endfor %}

当然,除了外键关系,厨师和餐点模型之间还可以有多对多的关系。你需要相应地修改代码。

撰写回答