Advertisement
anqxyr

Peewee ForeignKey filtering

Apr 7th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.75 KB | None | 0 0
  1. import peewee
  2.  
  3. db = peewee.SqliteDatabase('/somepath')
  4.  
  5. class BaseModel(peewee.Model):
  6.     class Meta:
  7.         database = db
  8.  
  9. class Page(BaseModel):
  10.     url = peewee.CharField(unique=True)
  11.  
  12. class Tag(BaseModel):
  13.     name = peewee.CharField(index=True)
  14.  
  15. class PageTag(BaseModel):
  16.     page = peewee.ForeignKeyField(Page, related_name='_pagetags', index=True)
  17.     tag = peewee.ForeignKeyField(Tag, index=True)
  18.  
  19. query = Page.select(Page.url)
  20. tag = 'some_tag'
  21. # this works:
  22. query = query.where(
  23.     orm.Page.id << [
  24.         i.page.id for i in
  25.         orm.PageTag.select(orm.PageTag.page)
  26.         .where(
  27.         orm.PageTag.tag ==
  28.             orm.Tag.get(orm.Tag.name == tag))])
  29.  
  30. # this doesn't:
  31. query = query.where(tag << orm.Page._pagetags)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement