ListVi中M2M元素的平均值

2024-10-01 04:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的模型:

class FruitItem(models.Model):
    vote = models.IntegerField()

class Fruit(models.Model):
   name = models.CharField(max_length=77)
   items = models.ManyToManyField(FruitItem)

这是我的观点:

class LoginRequiredMixin(object):
    @method_decorator(login_required)
    def dispatch(self, request, *args, **kwargs):
        return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)

class FruitsList(LoginRequiredMixin, ListView):
    template_name = 'fruits.html'
    context_object_name = "fruits"
    paginate_by = "8"

    def get_queryset(self):
        return Fruit.objects.filter(user=self.request.user).annotate(
                            vote_avg=Avg('items__vote'))

和模板:

{% for f in fruits %}
    {{ f.name }}
    {{ f.items.vote_AVERAGE }}
{% endfor %}

如何显示每个列表元素的vote平均值?({{ f.items.vote}}


Tags: nameselfmodelobjectmodelsrequestdefitems
1条回答
网友
1楼 · 发布于 2024-10-01 04:54:51
from django.db.models import Avg

def get_queryset(self):
    return Fruit.objects.filter(user=self.request.user).annotate(
                                vote_avg=Avg('items__vote'))

现在,模板上下文中的每个水果对象都有一个vote_avg属性,其中包含相关的FruitItem.vote字段的平均值

相关问题 更多 >