我知道这很简单,但我无法理解如何将一些模型连接在一起以在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 %}
这不起作用 - 我做错了什么?我的视图中的正确查询是什么,以确保检索每个组的联系人?
答案 0 :(得分:2)
好吧,看起来你已经从不同的地方获得了一些代码,所以你可以完全理解,你可以用 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_name
kwarg为您设置了一个新名称而不是_set
:
{{ group.contacts.all }}
我希望我能够更清楚地了解模型相关对象的简单访问。