それに関連するコメントを持つオブジェクトを取得することは可能ですか?現在、djangoコメントフレームワークは、関連するコメントを持つすべてのオブジェクトとコメント所有者のための別のクエリを作成します。どういうわけかこれを避けることはできますか?私はdjango 1.4を使用してprefetch_relatedを許可しています。1つのクエリを使用してオブジェクトに対するコメントを取得する
from django.contrib.contenttypes.models import ContentType
from django.contrib import comments
def get_comment_count_key(model):
content_type = ContentType.objects.get_for_model(model)
return 'comment_count_%s_%s' % (content_type.pk, model.pk)
def get_comment_count(model):
key = get_comment_count_key(model)
value = cache.get(key)
if value is None:
value = comments.get_model().objects.filter(
content_type = ContentType.objects.get_for_model(model),
object_pk = model.pk,
site__pk = settings.SITE_ID
).count()
cache.set(key, value)
return value
あなたでしextend the Comment modelをして、そこget_comment_countを追加します。
コメントフレームワークは、一般的な外部キーを使用してコメントをオブジェクトに関連付けます。定義すると、 'ContentType'をルックアップしてから実際のオブジェクトをフェッチするために複数のクエリが必要です。 –