如何在Django模板中制作包含两个与外键链接的模型的过滤摘要?

艾伦·孔

我目前正在学习django,以下是当前设置:

models.py

class Customer(models.Model):
    name = models.CharField(max_length=200, null=True)
    phone = models.CharField(max_length=200, null=True)
    def __str__(self):
        return self.name

class Order(models.Model):
    STATUS = (
        ('Pending', 'Pending'),
        ('Delivered', 'Delivered'),
    )
    customer = models.ForeignKey(Customer, null=True, on_delete=models.SET_NULL)
    status = models.CharField(max_length=200, null=True, choices=STATUS, default="Pending")
    def __str__(self):
        return self.product.name

views.py

def home(request):
    orders = Order.objects.all().order_by('-date_created')
    customers = Customer.objects.all()
    c_pending = orders.filter(status='Pending').all()

    context = {
        'orders': orders,
        'customers': customers,
        'c_pending': c_pending,
    }
    return render(request, 'home.html', context)

home.html

{% for customer in customers %}
<tr>
    <td>{{customer.name}}</td>
    <td>{{customer.phone}}</td>
    <td>{{customer.order_set.count}}</td>
    <td>{{c_pending.count}}</td>
</tr>
{% endfor %}

除了第四列之外,第一到第三列的工作都完美无缺。问题是我希望在第四栏中显示编号。每个客户处于待处理状态的订单数量,但确实显示了总数。整个待处理订单。为了让Django模板正确提取编号,我缺少哪些步骤。处于待处理状态的每个客户的订单数。非常感谢您的帮助。谢谢。

威廉·范昂塞姆

c_pending只是所有待处理订单的查询集,而不是该客户本身。您可以用挂单数量注释查询集:

from django.db.models import Count, Q

def home(request):
    orders = Order.objects.all().order_by('-date_created')
    customers = Customer.objects.annotate(
        total_orders=Count('order'),
        total_pending=Count('order', filter=Q(order__status='Pending'))
    )

    context = {
        'orders': orders,
        'customers': customers,
        'c_pending': c_pending,
    }
    return render(request, 'home.html', context)

在视图中,然后使用以下命令渲染该视图:

{% for customer in customers %}
<tr>
    <td>{{ customer.name }}</td>
    <td>{{ customer.phone }}</td>
    <td>{{ customer.total_orders }}</td>
    <td>{{ customer.total_pending }}</td>
</tr>
{% endfor %}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在实体中声明两个外键作为主键

Django模型:如何组合来自两个外键字段的反向访问集?

如何在一个列中引用两个外键属性?

如何在Django中合并两个模型

如何从Django中具有外键关系的两个模型中选择值

django模型外键访问两个模型的属性

Django:两个模型的外键

如何模板向后过滤两个不同的模型?

在单个模板中从两个Django模型检索记录

如何在Django中模拟模型的外键模型?

如何在JPA Springboot中映射两个表,例如主键和外键?

Django获取的对象是两个模型的外键

如何在SQL中的某些条件下使用外键链接两个表?

如何在Objection.js中创建两个外键关系

Django:使用通用外键链接两个模型

如何在Django中从两个模型(一对一)过滤

如何在两个不同的数据库之间的MySQL中设置外键?

如何在ABAP中创建两个复合外键

Django使用两个外键保存两个模型

如何过滤 Django 模型以仅包含出现在子表(带有外键)中的模型?

如何在html模板中连接两个模型?

如何在django中过滤两个外键

无法在 django 中向用户模型添加两个外键

Python - 如何在 django 模板中并排显示所有值的两个键的字典值

如何将我的模型链接到 django 模板中的外键和许多字段?

Django:如何在 Django 模板(html 文件)中减去两个模型字段?

如何在 Django 中同时获取两个模型

如何在视图中链接两个 django 模型

如何在 Django 的一个 HTML 模板中显示在 ListView 中声明的两个不同模型的两个单独列表?