2012-01-28 1 views
1

Django에서 RawQuerySet을 사용하고 있는데 몇 가지 매개 변수 (5)를 전달해야합니다. MyModel.objects.raw(SQL, params)을 사용하여 생성자를 호출 할 수 있습니다. SQL은 길고 관련이 없지만 params[991L, 991L, 991L, 7L, 3]입니다.Django RawQuerySet .__ repr__ : 형식 문자열에 대한 인수가 충분하지 않습니다.

나는 대신 RawQuerySet을받습니다. 따라서 호출은 OK입니다.

그러나 내 문제는 __repr__ (여기서 print 통해) 호출 할 때 "Not enough arguments for format string" 오류가 발생합니다. 이제는 내가 얻지 못하는 것은 다음과 같습니다.

  1. 호출이 성공한 이유는 무엇입니까?
  2. [m.start() for m in re.finditer('%s', qs.raw_query)]은 5 개의 항목을 제공하므로 qs.params을 제공합니다.

나는 뭔가를 놓친다는 것을 확신하지만 무엇을 찾을 수없는 것 같습니다.

+0

정확히'__repr__ '을 (를) 어떻게 호출합니까? – juliomalegria

+0

인쇄 사용 (장고 쉘에서 작업 할 때). –

+0

은 정확히 실패한 행을 보여줍니다. 참고로,'print'는'__repr__'을 호출하지 않습니다. – juliomalegria

답변

2

나는 결국 설명을 발견했다. 나는 이것이 다른 사람들에게 많은 도움이 될지 모르지만, 어쨌든.

문제는 통화 params 당신이 RawQuerySet를 인스턴스화하는 list을 사용할 수 있습니다 나타나는 list. 있다는 사실에서 온,하지만 나중에 문자열 서식을 사용할 수 있도록이 튜플로 변환되지 않습니다 에.

결론 MyModel.objects.raw(SQL, tuple(params))을 사용합니다.

+0

와우! 어떻게 찾았 니? 이것은 다른 누군가에게 언젠가는 정말 유용 할 수 있습니다. – juliomalegria