在我的项目中,我用django-threadedcomments and django-voting来实现类似红色的评论表决制度。
我 everything弄了一切正确的东西,我能够成功地记录对每一个已读评论和孩子的投票,然而,我对如何整理评论感到困惑,以便使最有分的评论上升到顶头。
是否通过模板标签? 我曾试图这样做,并回到一份清单,这些物品由<条码><>分/条码>订购,但评论的父母与子女之间的关系却被夸大。 我在这里做的是:
class OrderByVotesNode(template.Node):
def __init__(self, queryset_var, direction="desc"):
self.queryset_var = template.Variable(queryset_var)
self.direction = direction
def render(self, context):
key = self.queryset_var.var
value = self.queryset_var.resolve(context)
try:
direction = template.Variable(self.direction).resolve(context)
except template.VariableDoesNotExist:
direction = "desc"
model = value.model
qn = connection.ops.quote_name
ctype = ContentType.objects.get_for_model(model)
by_score = model.objects.filter(id__in=[f.id for f in value]).extra(select={"score": """
SELECT coalesce(SUM(vote), 0 )
FROM %s
WHERE content_type_id = %s
AND object_id = %s.%s
""" % (qn(Vote._meta.db_table), ctype.id, qn(model._meta.db_table), qn(model._meta.pk.attname))},
order_by=[(direction == "desc" and "-" or "") + "score"])
context[key] = by_score
return u""
任何帮助或建议都将受到高度赞赏。 感谢!