Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中使用模板中的许多额外字段_Python_Django - Fatal编程技术网

Python 在Django中使用模板中的许多额外字段

Python 在Django中使用模板中的许多额外字段,python,django,Python,Django,我将使用Djano文档中示例的一个稍微简化的版本 class Person(models.Model): name = models.CharField(max_length=128) class Group(models.Model): name = models.CharField(max_length=128) members = models.ManyToManyField(Person, through='Membership') class Members

我将使用Djano文档中示例的一个稍微简化的版本

class Person(models.Model):
    name = models.CharField(max_length=128)

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

class MembershipInfo(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    invite_reason = models.CharField(max_length=64)
所以我想做的是在模板中迭代,比如说,Group和Person,然后从额外的字段中获取一些信息,比如:

{% for group in group_list %}
    {% for person in group.person.all %}
        {{ person.membership_info.invite_reason }}
    {% endfor %}
{% endfor %}

但这似乎对我不起作用。我想我就是找不到访问它的正确方法。

您可以尝试以下方法:

{% for person in person_list.all %}
    {% for membership_info in person.members_set.all }}
        {{ membership_info.invite_reason }}
    {% endfor %}
{% endfor %}
这不是很有效,但这是我能想到的唯一一个单独使用模板的选项


编辑。另一个选项是从数据库中选择所有MembershipInfo对象,按人员和组对它们进行排序,并将它们传递给模板。这只需要一个数据库查询。

要打印什么?如果一个人是3个小组的成员,你希望是哪一个小组?或者全部?抱歉,我遗漏了一个重要的部分,我们先迭代组,然后是人。哎呀。我已经编辑了此内容。为了清楚起见,我需要与该组和艺术家对应的原因。然后,您应该执行MembershipInfo.objects.order_by('group','person')以更改排序顺序:),那么,如果我想按这些内容对它们进行分组,该怎么办?如中所示,为每个组设置一个标题,然后打印该组中的每个艺术家及其原因。不确定这在这里是否有效。有效的方法是
{%regroup%}
MembershipInfo.objects.order\u by('person','group')
by
person