2012-01-28 71 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 2012-01-28 17:38:45

+0

使用print(在Django shell中工作時)。 – 2012-01-28 17:40:04

+0

告訴我們確切的線路失敗。僅供參考,'print'不會調用'__repr__'。 – juliomalegria 2012-01-28 17:41:04

回答

2

我最終找到了解釋。我不確定這對其他人會有多大幫助,但無論如何。

問題的事實,在params通話是list.看樣子你可以使用list來實例化一個RawQuerySet來了,但它不轉換成一個元組,所以你不能使用它的字符串格式化後上。我想用MyModel.objects.raw(SQL, tuple(params))

+0

哇!你是怎麼發現的?這對其他人來說可能是有用的。 – juliomalegria 2012-01-28 19:38:57

相關問題