gpt4 book ai didi

python - 查询集 : LEFT JOIN with AND

转载 作者:太空狗 更新时间:2023-10-29 21:57:31 26 4
gpt4 key购买 nike

我使用带有 hack 的旧版 Django 1.1,它支持在 extra() 中加入。它有效,但现在是改变的时候了。 Django 1.2 使用 RawQuerySet 所以我已经为该解决方案重写了我的代码。问题是,RawQuery 不支持我在代码中有很多的过滤器等。通过谷歌挖掘,on CaktusGroup我发现,我可以使用 query.join()。这会很棒,但在代码中我有:

LEFT OUTER JOIN "core_rating" ON 
("core_film"."parent_id" = "core_rating"."parent_id"
AND "core_rating"."user_id" = %i

在 query.join() 中我写了第一部分 "core_film"."parent_id"= "core_rating"."parent_id" 但我不知道如何在之后添加第二部分和。
Django 是否存在任何解决方案,我可以使用自定义 JOIN 而无需重写所有过滤器代码(原始)?

这是我们当前在 extra() 中的代码片段

top_films = top_films.extra(  
select=dict(guess_rating='core_rating.guess_rating_alg1'),
join=['LEFT OUTER JOIN "core_rating" ON ("core_film"."parent_id" = "core_rating"."parent_id" and "core_rating"."user_id" = %i)' % user_id] + extra_join,
where=['core_film.parent_id in (select parent_id from core_film EXCEPT select film_id from filmbasket_basketitem where "wishlist" IS NOT NULL and user_id=%i)' % user_id,
'( ("core_rating"."type"=1 AND "core_rating"."rating" IS NULL) OR "core_rating"."user_id" IS NULL)',
' "core_rating"."last_displayed" IS NULL'],
)

最佳答案

不幸的是,这里的答案是否定的。

与大多数 Django 一样,Django ORM 遵循一种哲学,即简单的事情应该很容易,困难的事情应该是可能的。在这种情况下,您肯定处于“困难”领域,“可能”的解决方案是简单地编写原始查询。肯定存在这样的情况,其中编写原始查询可能很困难并且感觉有点恶心,但从项目的角度来看,这种情况很少见,无法证明添加此类功能的成本是合理的。

关于python - 查询集 : LEFT JOIN with AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5815775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com