.extra()
クエリが複数の結果を返す場所を使用しようとしています。たとえば、次のようになります。
'SELECT "books_books"."*" FROM "books_books" WHERE "books_books"."owner_id" = %s' % request.user.id
エラーが発生しました:only a single result allowed for a SELECT that is part of an expression
sqlite3を使用してdev-serverで試してください。誰かがこれを修正する方法を知っていますか?または私のクエリは間違っていますか?
編集:
私はdjango-simple-ratingsを使用しています、私のモデルは次のようになります:
class Thread(models.Model):
#
#
ratings = Ratings()
Thread
それぞれの評価と、ユーザーがすでに評価しているかどうかを表示したいと思います。2つのアイテムの場合、6回ヒットします。1つは実際のアイテムで、Thread
2つはにアクセスしratings
ます。クエリ:
threads = Thread.ratings.order_by_rating().filter(section = section)\
.select_related('creator')\
.prefetch_related('replies')
threads = threads.extra(select = dict(myratings = "SELECT SUM('section_threadrating'.'score') AS 'agg' FROM 'section_threadrating' WHERE 'section_threadrating'.'content_object_id' = 'section_thread'.'id' ",)
Thread
次に、dbをさらに押すことなく、それぞれの評価を印刷できます。2番目のクエリでは、次を追加します。
#continue from extra
blahblah.extra(select = dict(myratings = '#####code above####',
voter_id = "SELECT 'section_threadrating'.'user_id' FROM 'section_threadrating' WHERE ('section_threadrating'.'content_object_id' = 'section_thread'.'id' AND 'section_threadrating'.'user_id' = '3') "))
をハードコーディングしましたuser_id
。次に、このようなテンプレートで使用すると:
{% ifequal threads.voter_id user.id %}
#the rest of the code
エラーが発生しました:only a single result allowed for a SELECT that is part of an expression
はっきりしない場合はお知らせください。