我只是想根据此建议模型中的“感谢”字段为我的用户获取一个“感谢”计数:
class Advice(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
content = models.TextField()
slug = models.SlugField(max_length=200, unique=True)
thanked = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='adviceliked')
question = models.ForeignKey(Question, null=True, blank=True, on_delete=models.CASCADE, default=1, related_name='advices')
在我看来,我已经试过了
thanks_count = Advice.objects.filter(user__username=requested_user) \
.aggregate(total_thanks = Sum('thanked'))
第一句“谢谢”就行了,但之后的每一句,计数都会无穷大。你知道吗
所以我试着用注解:
thanks_count = Advice.objects.filter(user__username=requested_user).annotate(
total=Count('thanked')
)
在我的模板中:
{% for advice in thanks_count %}
{{ advice.total }}
{% endfor %}
这将得到正确的“感谢”计数为每个建议,但我需要所有的感谢之和,而不仅仅是一个列表的“感谢”计数为每个建议。你知道吗
然后我尝试了这个答案https://stackoverflow.com/a/5275944来计算for循环中每个项的总数。我创建了过滤器:
@register.filter
def total_thanks(thanks_count):
a = sum(advice['thanked'] for advice in thanks_count)
return a
在我的模板中:
{{ advice|total_thanks }}
但它只返回“0”的和。你知道吗
我很确定错误出在template标签上,但是当我使用{thanks\u count\total\u thanks}时,它会返回“'Advice'object is not subscriptable”
抱歉,如果这是混淆,我会试图澄清,如果有人也需要我。任何帮助或指向正确的方向都会帮助一帮人。我花了太长时间试图解决这个看似简单的问题。你知道吗
非常感谢!!!!你知道吗
如果您已经有了每个建议的总数,那么最简单的方法就是对它们进行总结:
希望有帮助!你知道吗
相关问题 更多 >
编程相关推荐