![](/img/trans.png)
[英]How to make peewee ORM return custom fields conversions from CTE?
[英]Is it possible to make sql join on several fields using peewee python ORM?
假設我們有這三個模型。
class Item(BaseModel):
title = CharField()
class User(BaseModel):
name = CharField()
class UserAnswer(BaseModel):
user = ForeignKeyField(User, 'user_answers')
item = ForeignKeyField(Item, 'user_answers_items')
answer = ForeignKeyField(Item, 'user_answers')
我想獲取當前用戶沒有相關UserAnswer
記錄的所有Items
。 在 SQL 中,它會是這樣的:
select * from item i
left join useranswer ua on ua.item_id=i.id and ua.user_id=1
where ua.id is null;
是否可以使用 peewee 語法對兩個字段進行左外連接? 如果我能這樣做,那會很酷:
Item.select().join(UserAnswer, JOIN_LEFT_OUTER, on=['__my_constraints_here__']).where(
(UserAnswer.id.is_null(True))
)
是的,您可以在多個條件下加入:
join_cond = (
(UserAnswer.item == Item) &
(UserAnswer.user == 1))
query = (Item
.select()
.join(
UserAnswer,
JOIN.LEFT_OUTER,
on=join_cond))
.where(UserAnswer.id.is_null(True)))
文檔在這里:http ://docs.peewee-orm.com/en/latest/peewee/api.html#Query.join
抱歉,沒有使用多個連接條件的示例,但on
只是一個任意表達式,因此您可以在其中放置任何您喜歡的有效 peewee“表達式”。
重要提示:您應該導入 JOIN - from peewee import JOIN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.