在Django中获取和显示相关对象

时间:2013-10-13 05:53:13

标签: python django django-models

我知道这很简单,但我无法理解如何将一些模型连接在一起以在Django的模板中显示。我有"小组"可以有几个"联系人"。

到目前为止,我已经:

class Group(models.Model):
    group_name = models.CharField()

class Contact(models.Model):
    contact_name = models.ForeignKey(Group)

在我看来,起初我认为只是让我的小组也可以获得任何附加的联系人,但这似乎并没有按预期发生:

def get_queryset(self):
    groups = Group.objects.all()
    return groups

我期待在我的模板中做这样的事情:

{% for group in groups %}
    <h2>{{ group.group_name }}</h2>
    {% for c in group.contact %}
        <h3>{{ c.contact_name }}</h3>
    {% endfor %}
{% endfor %}

这不起作用 - 我做错了什么?我的视图中的正确查询是什么,以确保检索每个组的联系人?

1 个答案:

答案 0 :(得分:2)

好吧,看起来你已经从不同的地方获得了一些代码,所以你可以完全理解,你可以用 2种不同的方式做到这一点:

1)要访问任何类型的相关对象,只需要一个简单的ForeignKeyManyToMany,您只需要从相反的模型出发并使用_set,就像这个示例一样:

class Group(models.Model):
    group_name = models.CharField()

class Contact(models.Model):
    contact_name = models.ForeignKey(Group)

{{ group.contact_set.all }}

2)您可以设置一个与默认_set不同的名称,更改Contact,如下所示:

class Contact(models.Model):
    contact_name = models.ForeignKey(Group, related_name='contacts')

因此,related_name kwarg为您设置了一个新名称而不是_set

{{ group.contacts.all }}

我希望我能够更清楚地了解模型相关对象的简单访问。