多对多字段数据无法呈现

时间:2014-01-12 08:13:52

标签: python django

我在访问Django模态数据时遇到了问题,因此t-is my modal。

class People(models.Modal):
    name = models.CharField(max_length=30, choices=something, db_index=True)
    location = models.CharField(max_length=30, choices=something, db_index=True)


class MyService(models.Model):

    name = models.CharField(max_length=30, choices=something, db_index=True)
    peoples = models.ManyToManyField(People, null=True, blank=True)

这是一些视图部分

services  = MyService.objects.all()
context['services'] = services

我正在尝试访问模板中的多对多字段数据,例如

{% for service in services.peoples_set.all %}
        {{service.name}}
    {% endfor %}

我无法访问这些详细信息。

请帮助我解决我在这里做错的事。

谢谢

2 个答案:

答案 0 :(得分:0)

servicesQuerySet,而不是模型实例。

如果要显示服务名称,请迭代services

{% for service in services %}
    {{service.name}}
{% endfor %}

如果要显示人名,则需要嵌套for

{% for service in services %}
    {% for person in service.peoples.all %}
        {{ person.name }}
    {% endfor %}
{% endfor %}

答案 1 :(得分:0)

你有两个错误。

首先,正如falsetru指出的那样,services是一个QuerySet。也就是说,它是所有服务的容器 - 每个都有自己的一组人员。

其次,您已直接在Service上定义了多对多字段,因此您使用实际定义的字段名称 - people - 而不是反向关系。

所以:

{% for service in services %}
    {{ service.name }}
    {% for people in service.peoples.all %}
        {{ people.name }}
    {% endfor %}
{% endfor %}