いくつかの複雑なクエリを使用してランク、比率、およびその他の複雑な出力を返すdjangoアプリケーションに取り組んでいます。私はウェブからいくつかの例をたどりました。これは、それを配置して返されたクエリセットからデータを取得する最良の方法を見つけるのに役立ちました
それでも、特定のレコードにカスタムの詳細を挿入する方法を見つけたいと思います。たとえば、私の場合、返されたレコード セットに get_absolute_url() 値を関連付けようとしています。
以下は、最も使用されている興味を返す例です。このクエリは常に限られたクエリセットを返します。返された辞書をモデルの get_absolute_url() 値で拡張する方法はありますか?
def most_used_interests(self, limit_by=10):
cursor = connection.cursor()
cursor.execute("""
SELECT
i.name,
i.name_ar,
i.name_en,
ij.interest_id,
SUM (ij.C) item_count
FROM
(
SELECT
C .interest_id,
COUNT (b. ID) C
FROM
bargain_bargain b,
bargain_bargain_bargain_target C
WHERE
b. ID = C .bargain_id
GROUP BY
C .interest_id
UNION
SELECT
x.interest_id,
COUNT (P . ID) C
FROM
promotion_promotion P,
promotion_promotion_promo_target x
WHERE
x.promotion_id = P . ID
GROUP BY
x.interest_id
) ij, list_interest i
WHERE i.id=ij.interest_id
GROUP BY
ij.interest_id,
i.name,
i.name_ar,
i.name_en
ORDER BY
item_count DESC
LIMIT %s
""", [limit_by, ])
desc = cursor.description
if cursor.rowcount:
return [
dict(zip([col[0] for col in desc], row))
for row in cursor.fetchall()
]
return None