Django RawQuerySet .__ repr__: недостаточно аргументов для строки формата - PullRequest
1 голос
/ 28 января 2012

Я использую RawQuerySet в Django, и мне нужно передать ему несколько параметров (5). Я могу вызвать конструктор, используя MyModel.objects.raw(SQL, params). SQL довольно длинный и не очень актуальный, но params равно [991L, 991L, 991L, 7L, 3].

Я получаю RawQuerySet взамен. Следовательно, вызов в порядке.

Однако моя проблема в том, что когда вызывается __repr__ (через print здесь), я получаю ошибку "Not enough arguments for format string". Теперь я не получаю следующее:

  1. Почему бы мне не иметь достаточно аргументов, так как вызов сработал?
  2. [m.start() for m in re.finditer('%s', qs.raw_query)] дает мне 5 предметов и qs.params.

Я почти уверен, что что-то упустил, но не могу найти, что.

1 Ответ

2 голосов
/ 28 января 2012

Я в конце концов нашел объяснение.Я не уверен, что это очень поможет другим, но в любом случае.

Проблема возникла из-за того, что params в вызове был list. Кажется, вы можете использовать listдля создания экземпляра RawQuerySet, но он не преобразуется в кортеж, поэтому вы не сможете использовать его для форматирования строки позже.

Заключение Я буду использовать MyModel.objects.raw(SQL, tuple(params)).

...