Фильтр Django ManyToMany ()

Кстати ... Как обновлять его каждый раз, чтобы он печатал mi в одном месте, просто изменяйте число.

blockquote>

В общем, способ сделайте это с помощью управляющих кодов терминала . Это особенно простой случай, для которого вам нужен только один специальный символ: U + 000D CARRIAGE RETURN, который написан '\r' в Python (и многих других языках). Вот полный пример, основанный на вашем коде:

from sys import stdout
from time import sleep
for i in range(1,20):
    stdout.write("\r%d" % i)
    stdout.flush()
    sleep(1)
stdout.write("\n") # move the cursor to the next line

Некоторые вещи об этом могут быть удивительными:

  • \r идет в начале строки, поэтому что, пока программа запущена, курсор всегда будет после номера. Это не просто косметика: некоторые терминальные эмуляторы очень запутаны, если вы делаете это наоборот.
  • Если вы не включили последнюю строку, то после завершения программы ваша оболочка напечатает подсказка сверху номера.
  • В некоторых системах требуется stdout.flush, или вы не получите какой-либо вывод. Другие системы могут не требовать этого, но это не наносит вреда.

Если вы обнаружите, что это не сработает, первое, что вы должны подозревать, это то, что ваш эмулятор терминала неисправен , Программа vttest может помочь вам протестировать ее.

Вы можете заменить stdout.write на инструкцию print, но я предпочитаю не смешивать print с прямым использованием файла объекты.

105
задан Andy Baker 11 September 2014 в 00:22
поделиться

1 ответ

Просто повторим то, что сказал Томаш.

Есть много примеров фильтров стиля FOO__in = ... в тестах многие-ко-многим и многие-к-одному . Вот синтаксис для вашей конкретной проблемы:

users_in_1zone = User.objects.filter(zones__id=<id1>)
# same thing but using in
users_in_1zone = User.objects.filter(zones__in=[<id1>])

# filtering on a few zones, by id
users_in_zones = User.objects.filter(zones__in=[<id1>, <id2>, <id3>])
# and by zone object (object gets converted to pk under the covers)
users_in_zones = User.objects.filter(zones__in=[zone1, zone2, zone3])

Синтаксис двойного подчеркивания (__) используется повсеместно при работе с наборами запросов .

131
ответ дан 24 November 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: