mrh*_*ham 4 python django django-models
我知道这很简单,但我无法理解如何将一些模型连接在一起以显示在 Django 模板中。我有可以有多个“联系人”的“群组”。
到目前为止我已经得到:
class Group(models.Model):
group_name = models.CharField()
class Contact(models.Model):
contact_name = models.ForeignKey(Group)
Run Code Online (Sandbox Code Playgroud)
在我看来,起初我认为简单地获取我的组也会得到任何附加的联系人,但这似乎并没有按预期发生:
def get_queryset(self):
groups = Group.objects.all()
return groups
Run Code Online (Sandbox Code Playgroud)
我期望在我的模板中做这样的事情:
{% for group in groups %}
<h2>{{ group.group_name }}</h2>
{% for c in group.contact %}
<h3>{{ c.contact_name }}</h3>
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这不起作用——我做错了什么?在我看来,确保检索到每个组的联系人的正确查询是什么?
好吧,看起来您从不同的地方获得了一些代码,因此为了让您能够完全理解,您可以通过两种不同的方式来执行此操作:
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 }}
Run Code Online (Sandbox Code Playgroud)
2)您可以设置一个与默认_set更改不同的名称Contact,如下所示:
class Contact(models.Model):
contact_name = models.ForeignKey(Group, related_name='contacts')
Run Code Online (Sandbox Code Playgroud)
因此,related_namekwarg 为您设置了一个新名称,而不是原来的名称_set:
{{ group.contacts.all }}
Run Code Online (Sandbox Code Playgroud)
我希望我能够更清楚地了解模型相关对象的简单访问。
| 归档时间: |
|
| 查看次数: |
4481 次 |
| 最近记录: |