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

印刷を使用する(Djangoシェルで作業している場合)。 –

+0

は、失敗した行を正確に示しています。 FYI、 'print'は' __repr__'を呼びません。 – juliomalegria

答えて

2

私は結局説明を見つけました。私はこれが他の人に多くの助けになるとは思わないが、とにかく。

問題は、コール中paramsは、あなたがRawQuerySetをインスタンス化するlistを使用することができます表示されますが、後で文字列の書式設定のためにそれを使用することはできませんので、それはタプルに変換されていないlist.たという事実から来ましたに。

結論私はMyModel.objects.raw(SQL, tuple(params))を使用します。

+0

うわー!どうやってそれを見つけましたか?これは他の誰かにいつか本当に役立つかもしれません。 – juliomalegria

関連する問題