0
私は以下の2つのクエリセットbooks1とbooks2を持っています。両方私は注釈を使用してbooks1の場合は10、books2の場合は30の定数を持つ別の列を追加しています。問題は、私はクエリセットを連結した後、最終セットは、私が見るものさえbooks2django:SQL UNIONまたはquerysetと連結:注釈付きで使用すると正しく機能しない
author1 = Author.objects.get(pk=1)
books1 = author1.books_set.annotate(sample_var=Value(10))
author2 = Author.objects.get(pk=2)
books2 = author2.books_set.annotate(sample_var=Value(30))
combine = books1 | books2
ため10 =注釈値を示しています
name author id sample_var
name1 (from books1) 1 10
.. 1 10
.. 1 10
.. 1 10
name2 (from books2) 2 10 (instead of 30)
.. 2 10 (instead of 30)
.. 2 10 (instead of 30)
.. 2 10 (instead of 30)
理由は、結合のために使用されているSQLがされます以下のように。私が[0] .nameにアクセスしようとすると、これが得られます。注釈部分ではなく、WHERE部分を処理します。結合クエリセットには10個の "sample_var"が使用されていますが、これは正しくないため、上記の表に10がすべて表示されています。
がSELECT "books_books"."name", "books_books"."author_id", 10 AS "sample_var"
FROM "books_books"
WHERE ("books_books"."author_id" = 1)
union all
SELECT "books_books"."name", "books_books"."author_id", 30 AS "sample_var"
FROM "books_books"
WHERE ("books_books"."author_id" = 2)