📜  django 外键过滤器示例 (1)

📅  最后修改于: 2023-12-03 15:00:27.025000             🧑  作者: Mango

Django 外键过滤器示例

简介

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 来获取一个主题下的所有文章。但是,过滤器还可以使用其他方法来过滤数据,例如 filterexclude