2

我知道这很简单,但我不知道如何将一些模型连接在一起以显示在 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 %}

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

4

1 回答 1

3

好吧,看起来你的一些代码来自不同的地方,所以你可以完全理解,你可以通过2 种不同的方式来做到这一点:

1)要访问任何类型的相关对象,作为一个简单的对象,ForeignKey或者ManyToMany您只需要从相反的模型开始并使用 _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_namekwarg 为您设置了一个新名称,而不是_set一个:

{{ group.contacts.all }}

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

于 2013-10-13T07:24:31.120 回答