【问题标题】:Django Models Create a Coustom QueryDjango 模型创建自定义查询
【发布时间】:2013-05-10 23:53:31
【问题描述】:

我正在尝试在某个时间之前或某个时间将所有帖子放在一个线程中。那么如何让 Django 允许我输入自己的查询呢?

这是我使用 Django 的模型函数所能得出的最接近的结果。

# need to get all the post from Thread post_set that were created before Thread post_set 9
posts = Thread.post_set.filter(created <= Thread.post_set.all()[9].created)

【问题讨论】:

    标签: python django django-models django-queryset django-permissions


    【解决方案1】:

    你可以像这样使用raw sql

    Thread.objects.raw('SELECT ... FROM myapp_thread WHERE ...')
    

    【讨论】:

    • 谢谢raw 正是我想要的。还有一种方法可以查看过滤器使用的查询吗?或翻译过滤器功能的网站。即created_ltid__exact
    • 只需print post.query,将post 替换为您的查询对象的名称。
    • @Crispy 请参阅此答案以获取相关信息:stackoverflow.com/a/1074224/1888559
    【解决方案2】:

    如果post_set 是外键,则使用:

    posts = Thread.objects.filter( post_set__created__lt=datetime.date(2013, 5, 10))
    

    如果您仍想使用原始 SQL 查询,详细说明 here,请小心,因为不会自动执行转义

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 2015-04-16
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 2017-05-27
      • 2019-10-17
      • 2013-12-31
      相关资源
      最近更新 更多