📅  最后修改于: 2023-12-03 15:00:27.025000             🧑  作者: Mango
Django 外键过滤器是指当一个数据库表中的字段是另外一个表的主键时,可以使用外键过滤器来获取这个表中特定字段的数据。外键过滤器通常用于在模板中显示相关联的对象信息。
下面是一个外键过滤器的示例,用于在博客主题页面上显示该主题下的所有文章:
# models.py
class Theme(models.Model):
name = models.CharField(max_length=50)
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
theme = models.ForeignKey(Theme, on_delete=models.CASCADE)
<!-- theme_detail.html -->
{% extends 'base.html' %}
{% block content %}
<h1>{{ theme.name }}</h1>
<ul>
{% for article in theme.article_set.all %}
<li>{{ article.title }}</li>
{% endfor %}
</ul>
{% endblock %}
在这个示例中,我们创建了两个模型:Theme 和 Article。Theme 模型代表博客的主题,Article 模型代表博客文章。文章与主题是一对多关系,即一个主题下可以有多篇文章。在 Article 模型中,我们使用了外键(ForeignKey)来关联主题。因为一篇文章只能属于一个主题,所以可以使用 ForeignKey。
在 templates 文件夹中的 theme_detail.html 文件中,我们使用了外键过滤器 theme.article_set.all
来获取该主题下的所有文章。此外,我们还可以使用 theme.article_set.filter(...)
或 theme.article_set.exclude(...)
过滤文章。例如,要获取文章标题为 "Hello World" 的所有文章,可以使用 theme.article_set.filter(title='Hello World')
。
Django 外键过滤器是使用外键关联的模型中非常有用的工具。它使得在模板中显示相关的数据变得更加容易和直观。在以上示例中,我们演示了如何使用 theme.article_set.all
来获取一个主题下的所有文章。但是,过滤器还可以使用其他方法来过滤数据,例如 filter
或 exclude
。