こんにちは(私の悪い英語の私を言い訳)!Django:GROUP BYを追加してextra()メソッドを追加しましたか?
私はこの作るとき:
gallery_qs = Gallery.objects.all()\
.annotate(Count('photos'))\
.extra(select={'photo_id': 'photologue_photo.id'})
をSQLクエリは次のとおりです。
SELECT (photologue_photo.id) AS `photo`, `photologue_gallery`.*
FROM `photologue_gallery`
LEFT OUTER JOIN `photologue_gallery_photos`
ON (`photologue_gallery`.`id` = `photologue_gallery_photos`.`gallery_id`)
LEFT OUTER JOIN `photologue_photo`
ON (`photologue_gallery_photos`.`photo_id` = `photologue_photo`.`id`)
GROUP BY `photologue_gallery`.`id`, photologue_photo.id
ORDER BY `photologue_gallery`.`publication_date` DESC
問題はextra
メソッドが自動的にGROUP BY句でphotologue_photo.idを追加することです。そして、私はそれがギャラリーを複製するため、例えば、それを削除する必要があります。
[<Gallery: Lorem ipsum dolor sit amet>, <Gallery: Lorem ipsum dolor sit amet>, <Gallery: Lorem ipsum dolor sit amet>, <Gallery: Lorem ipsum dolor sit amet>, <Gallery: Lorem ipsum dolor sit amet>, <Gallery: Lorem ipsum dolor sit amet>, <Gallery: Lorem ipsum dolor sit amet>]
私はジャンゴでこのクエリを作成する必要がSiの、それは可能ですか?
SELECT (photologue_photo.id) AS `photo`, `photologue_gallery`.*
FROM `photologue_gallery`
LEFT OUTER JOIN `photologue_gallery_photos`
ON (`photologue_gallery`.`id` = `photologue_gallery_photos`.`gallery_id`)
LEFT OUTER JOIN `photologue_photo`
ON (`photologue_gallery_photos`.`photo_id` = `photologue_photo`.`id`)
GROUP BY `photologue_gallery`
ORDER BY `photologue_gallery`.`publication_date` DESC
ありがとうございます! :)
を写真IDにアクセスすることができ、あなたがGROUP_BYからそれを削除すると、クエリが動作しません。それがSELECTにある場合は、GROUP_BYに存在する必要があります。 – simplyharsh
私は2番目のクエリを使用し、それが動作します。何故なの ? –