簡體   English   中英

Python peewee外鍵

[英]Python peewee foreign keys

如果我有下表:

class Ticket(BaseModel):
    event = ForeignKeyField(Event)
    category = ForeignKeyField(TicketCategory)
    order_number = IntegerField()
    tier_name = CharField()
    num_available = IntegerField()
   price = DecimalField()

然后我執行以下代碼:

tickets = Ticket.select()
for ticket in tickets:

     print ticket.event.id

訪問外來對象的主鍵是否強制peewee啟動另一個查詢? 或者peewee足夠聰明,知道id已經可用了嗎?

它執行另一個查詢。 為了避免這種情況

Ticket.select(Ticket, Event).join(Event)

http://peewee.readthedocs.org/en/latest/peewee/querying.html#saving-queries-by-selecting-related-models

這是幾年之后,但對於偶然發現這個頁面的其他人來說,這些天你可以使用Django使用的相同語法:<< field_name >> _ id來訪問id。 在這種情況下,ticket.event_id。

根據文檔

有時,您只需要來自外鍵列的關聯主鍵值。 在這種情況下,Peewee遵循Django建立的約定,允許您通過將“_id”附加到外鍵字段的名稱來訪問原始外鍵值:

但是,值得注意的是,這僅在訪問查詢對象的值時才有效。 換句話說,如果您想更改事件ID,只需設置即可

ticket.event = new_event_id

而不是嘗試設置ticket.event_id。

嘗試基於外鍵選擇時也是如此:

Ticket.select()。where(event == desired_event_id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM