我在访问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 %}
我无法访问这些详细信息。
请帮助我解决我在这里做错的事。
谢谢
答案 0 :(得分:0)
services
是QuerySet
,而不是模型实例。
如果要显示服务名称,请迭代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 %}