2012-01-28 101 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