как решить этот конкретный запрос в наборе запросов Django - PullRequest
2 голосов
/ 16 мая 2011
+----+---------+-----------+---------------------+-----------+-----------+
| id | user_id | foo_id    | created_at          | active    |type       |
+----+---------+-----------+---------------------+-----------+-----------+
|  1 |       1 |         1 | 2011-05-10 13:12:35 |         1 | 2         |
|  7 |       5 |         2 | 2011-05-10 14:45:04 |         1 | 1         |
|  4 |       4 |         2 | 2011-05-10 13:24:45 |         1 | 2         |
|  8 |       6 |         2 | 2011-05-16 14:53:03 |         1 | 1         |
|  9 |       7 |         2 | 2011-05-16 14:55:11 |         1 | 0         |
+----+---------+-----------+---------------------+-----------+-----------+

Это UserMapper модель в Django.Я хочу написать запрос так:

Получить все user_id, чей foo_id = 2 and type=0 и все результаты user_id = 6; Скажи;

select * from table where user_id = 6 and (foo_id=2 and type=6) // Such sort of query

Как я могу сделать в наборе запросов Django..

Ответы [ 3 ]

5 голосов
/ 16 мая 2011

Если вы имеете в виду user_id=6 and type=6 and food_id=2, то просто используйте:

UserMapper.objects.filter(user_id=6, type=6, food_id=2)

если вы имеете в виду (user_id=6) or (type=6 and food_id=2), вы можете использовать объект Q:

from django.db.models import Q
UserMapper.objects.filter(Q(user_id=6) | Q(type=6, food_id=2))

Подробнее об объекте Q здесь: http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

0 голосов
/ 16 мая 2011

UserMapper.objects.filter(user=user).filter(foo=foo).filter(type=0) * * 1002

, где user - это User объект с идентификатором 6, foo - это Foo с идентификатором 2, и 0 может быть лучше при некоторых значениях Type.SOMETHING вместо использования 0.

0 голосов
/ 16 мая 2011
UserMapper.objects.filter(user_id=6).filter(food_id=2).filter(type=6)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...