2

次のテーブルがある場合:

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 が既に利用可能であることを知るほど賢いのでしょうか?

4

2 に答える 2

8

数年後のことですが、このページに出くわした他の人にとっては、最近では Django と同じ構文 <<field_name>>_id を使用して id にアクセスできます。この場合、ticket.event_id.

ドキュメントごと:

外部キー列からの関連付けられた主キー値のみが必要な場合があります。この場合、Peewee は、外部キー フィールドの名前に「_id」を追加することで生の外部キー値にアクセスできるようにするという、Django によって確立された規則に従います。

ただし、これはクエリされたオブジェクトの値にアクセスする場合にのみ機能することに注意してください。つまり、イベントIDを変更したい場合は、設定するだけです

ticket.event = new_event_id

ticket.event_id を設定しようとする代わりに。

外部キーに基づいて選択しようとすると、同じことが当てはまります。

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

于 2016-06-15T02:16:59.040 に答える
5

別のクエリを実行します。これを回避するには:

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

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

于 2014-02-25T19:29:59.190 に答える