首页 > 解决方案 > 在 django 中查询?

问题描述

我正在尝试实现查询,但我无法做到。

我在这里有 3 个实体:

客户:

class Client(LogsMixin, models.Model):
    """Model definition for Client."""

    company_name = models.CharField("Nombre de la empresa", max_length=150, default="Nombre de empresa", null=False, blank=False)
    user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)

培训班:

class Course(LogsMixin, models.Model):
    """Definición del modelo de Proveedor."""

    name = models.CharField("Nombre del curso", null=False, default="", max_length=200)

消耗:

class Consumption(LogsMixin, models.Model):
    """Definición del modelo de Consumos"""

    client = models.ForeignKey('authentication.Client', verbose_name=("Cliente"), null=True, default=None, on_delete=models.SET_DEFAULT)
    course = models.ForeignKey(Course, verbose_name=("Curso"), null=True, default=None, on_delete=models.SET_DEFAULT)

我想为访问该页面的客户获取 10 个最畅销的课程列表。我想向客户展示课程的名称以及他对该课程的消费次数。在每次消费中,都有一个课程和一个客户相关联。

有人可以帮我一把吗?

标签: djangodjango-models

解决方案


未经测试:

视图.py

def my_view_function(request):

   # 10 courses with the most consumptions fromt that client:
   courses = Course.objects.filter(
       consumption_set__client = request.user.client
   ).order_by(
      'consumption_set__count'
   )[0:10]

   return render(request, 'template.html', {'courses' : courses})

模板.html

{% for course in courses %}
  <div> Course Name: {{ course.name }} </div>
  <div> Number of Consumptions {{ course.consumption_set.count }} </div>
{% endfor %}

推荐阅读