sql - 从 Django 查询 postgres 数据库以列出所有具有事件图书借阅(tab2)的用户(tab1)的最佳方法?

标签 sql django postgresql

我在 Django 中有一个简单的应用程序。简单的逻辑是一种图书图书馆。

表 1。存储用户:

class Readers(Model):  
    last_name = CharField(...)  
    first_name = CharField(...)  

选项卡 2。存储借书:

class BookBorrows(Model):  
    index = IntegerField(db_index=True, ...)  
    reader = ForeignKey('Reader', ...)  
    book = ForeignKey('Book', ...)
    active = BooleanField(...)

我正在努力找出什么是正确的解决方案:

  1. 至少有一本借书的所有读者列表(字段 active==True)。
  2. 当前没有任何借书的所有读者列表(字段 active==False)。

经过一些搜索之后,我正在考虑 django .raw('QUERY ...') 或者是否有一种对 django 更友好的方法来实现这一点?

P.S.:这是我发布到 SO 的第一个问题。

最佳答案

reader_ids_with_book = BookBorrows.objects.filter(active=True).values_list(
    'reader_id', flat=True
)

readers_without_book = Readers.objects.exclude(id__in=list(reader_ids_with_book))

第一个查询为您提供了至少借了一本书的用户的值列表查询集,您可以使用它来找出还没有借过任何东西的其他用户

关于sql - 从 Django 查询 postgres 数据库以列出所有具有事件图书借阅(tab2)的用户(tab1)的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41070969/

相关文章:

php - Mysql - 关联表 - on 子句中的未知列

python - 缩略图现在显示在 django 管理 ListView 中

postgresql - Postgis 扩展安装 PostgreSQL

sql - 手动更改postgresql中查询的执行计划?

mysql - 会首先执行括号内的所有内容吗?

sql - 在应用 block 中使用需要表参数的标量函数

jquery - Django 管理自定义 javascript 加载顺序

python - 有趣的 Django `NoReverseMatch error`

postgresql - 如何处理为 Multi-Tenancy Web 应用程序动态创建模式/表

sql - 在 SQL 数据库中存储电子邮件