You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过pub_name获取book_name:SQL查询与Django QuerySet实现

通过出版社名称获取对应书籍名称的实现方式

SQL 查询语句

使用内连接关联两张表,通过出版社名称过滤并提取对应的书籍名称:

SELECT b.book_name
FROM Book b
INNER JOIN Publications p 
    ON b.pub_id = p.id
WHERE p.pub_name = '目标出版社名称';

如果存在多个同名出版社,上述语句会返回所有匹配该名称的出版社对应的书籍。

Django QuerySet 实现

前提:模型定义

先确保Django模型与数据库表对应,关联字段映射pub_id:

from django.db import models

class Publications(models.Model):
    pub_name = models.CharField(max_length=255)

    class Meta:
        db_table = 'Publications'

class Book(models.Model):
    book_name = models.CharField(max_length=255)
    pub = models.ForeignKey(
        Publications, 
        on_delete=models.CASCADE, 
        db_column='pub_id'
    )

    class Meta:
        db_table = 'Book'

查询方式

  1. 反向关联查询
    先定位目标出版社对象,再查询其关联的书籍:
# 若存在多个同名出版社,建议用filter替代get
pub = Publications.objects.get(pub_name='目标出版社名称')
# 提取所有对应的书籍名称列表
book_names = Book.objects.filter(pub=pub).values_list('book_name', flat=True)
  1. 跨模型链式过滤
    直接通过双下划线跨模型过滤,一步获取结果:
# 直接过滤并提取书籍名称
book_names = Book.objects.filter(pub__pub_name='目标出版社名称').values_list('book_name', flat=True)

如果需要完整的Book对象而非仅名称,去掉.values_list('book_name', flat=True)即可。

内容的提问来源于stack exchange,提问作者Hari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:02:06