创建model模型
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
# to是指向你的表,带上引号你关联的表位置可以在此表之后,不带关联的表就必须在前
# DO_NOTHING表示删除互相不做操作
category = models.ForeignKey(to="Category", to_field="name ", on_delete=models.DO_NOTHING,
related_name="category")
连表查询
# 查询所有书的类别为言情的
# 只需在外键字段加上双下划线,在加上查询此表的字段即可
Article.objects.filter(category__name="言情")
# 查询类别为言情的所有书名
# 在model类名上加上_set即可
queryset = Category.objects,filter(name="言情")
queryset.article_set.all()
select_related和prefetch_related
select_related:
# 使用方法
Article.objects.all().select_related("category")
# 直接按照model方式这样查询,sql使用的inner join的查询,会导致没有关联的查询不出来
# 当腰使用left join时将外键改成以下
category = models.ForeignKey(to="Category", to_field="name", on_delete=models.DO_NOTHING,
related_name="category", null=True)
本文介绍如何在 Django 中创建 Model 模型,并演示了 ForeignKey 的使用及如何进行连表查询。此外,还详细讲解了 select_related 和 prefetch_related 的区别,以及如何通过调整 ForeignKey 设置来实现 LEFT JOIN 查询。
1276





