Django: извлечение объекта " Q " из " QuerySet`
у меня есть Джанго QuerySet
и я хочу получить Q
объект из нее. (т. е. это содержит тот же самый запрос, что и этот queryset.)
это возможно? И если да, то как?
3 ответов
нет, но вы можете сначала создать объект Q и использовать его; альтернативно, создайте свой запрос как dict и передайте его своему методу фильтра и объекту Q.
Это не совсем то, что вы просили, но вы можете извлечь SQL из запроса при обращении участника запроса. Например:
x = somequeryset.query
затем вы можете использовать это для нового объекта queryset для восстановления исходного queryset. Это может работать лучше при сохранении таких вещей, как" значения", которые определены для набора запросов. Определенный x легко хранить. Я использовал это в прошлом для сохранения пользовательских запросов / поисков, которые затем запускаются ежедневно с результатами, отправленными по электронной почте пользователь.
релевантно также, если вы хотите объект Q, чтобы вы могли восстановить сложный запрос, вызвав к нему другой объект Q, является то, что, если два запроса находятся на одной модели, вы можете или запросы непосредственно для того же эффекта. Стоит попробовать это и изучить SQL до и после.
например:
qs1 = model.objects.filter(...)
print("qs1: {}".format(qs1.query)
qs2 = model.objects.filter(...)
print("qs2: {}".format(qs1.query)
qs = q1 | q2
print("qs: {}".format(qs.query)
Я, конечно, нашел ваш вопрос, потому что я хотел, чтобы объект Q из запроса именно по этой причине и обнаружил на пользователях Django Группа:
https://groups.google.com/d/msg/django-users/2BuFFMDL0VI/dIih2WRKAgAJ
что запросы могут быть объединены так же, как и объекты Q.
Это может быть или не может быть полезно для вас, в зависимости от причины, по которой вы хотите, чтобы Q объект, конечно.