python - Doing database JOIN in django -


i want equivalent query select user_name, item_name users, items users.favor_item_id = items.item_id, return user_name , item_name pairs. in database, 1 user can have multiple favoured items.

i'm curious equivalent django query sql query??

my first thought list (user, favor_item_id) pair users, , item_name id item_id. seems search item table n times(n number of pairs), has complexity of o(nlogm)(m number of items in item), while using sql query above, complexity o(n).

is there more efficient way of doing in django(or orm system)?

(or orm system)?

really? here's how you'd in sqlalchemy

assuming reasonable mapped classes (here, using declarative):

base = sqlalchemy.ext.declarative.declarative_base()  class item(base):     __tablename__ = 'items'     id = column('item_id', integer, primary_key=true)     name = column('item_name', string)  class user(base):     __tablename__ = 'users'     name = column('user_name', string(50), primary_key=true)     favor_item_id = column(integer, foreignkey(item.id))      favor_item = relationship(item, backref="favored_by") 

the query super simple

>>> print sqlalchemy.orm.query((user.name, item.name)).join(item.favored_by) select users.user_name users_user_name, items.item_name items_item_name  items join users on items.item_id = users.favor_item_id 

Comments

Popular posts from this blog

c++ - Is it possible to compile a VST on linux? -

java - Output of Eclipse is rubbish -

jquery - Confused with JSON data and normal data in Django ajax request -