如何通过模板中的对象访问自定义多对多中的字段

Posted

技术标签:

【中文标题】如何通过模板中的对象访问自定义多对多中的字段【英文标题】:How to access fields in a customized many-to-many through object in templates 【发布时间】:2011-04-01 20:56:59 【问题描述】:

考虑以下模型:

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 Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)

Membership 是一个带有额外字段的自定义多对可能直通对象。 如果我有一个 person 实例,我如何访问其所有成员关系的相应 date_joined 字段 - 无论是在常规代码中还是在 django 模板文件中?

【问题讨论】:

【参考方案1】:

person.membership_set.all() 将为您提供给定person 的所有Membership 实例的列表。您可以在常规代码和模板中使用它。

for each in person.membership_set.all():
    print each.date_joined

% for each in person.membership_set.all %
     each.date_joined 
% endfor %

【讨论】:

你能显示视图吗?仅包含字典作为人的渲染功能的参数? Class Membership为大写时,membership_set函数为什么要小写?

以上是关于如何通过模板中的对象访问自定义多对多中的字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在引导选项卡块中按 django 模板中的多对多字段过滤对象

模板中的多对多通过模型中的 Django 访问条目

Django如何过滤多对多字段中的对象,而不是原始查询集

如何过滤和访问 Django QuerySet 中的多对多字段?

SQLAlchemy如何在多对多中按孩子过滤

在一对多和多对多中使用ORM