Django 如何在没有外键关系的情况下在列表显示中显示另一个表中的列?

Django 如何在没有外键关系的情况下在列表显示中显示另一个表中的列?,django,django-models,django-forms,django-views,django-admin,Django,Django Models,Django Forms,Django Views,Django Admin,我有以下数据库关系: 现在,在我的admin.py中的列表显示中我想显示订单表和订单项目的数量行。为此,我将使用以下sql查询: SELECT order_id, quantity FROM orders INNER JOIN order_items ON orders.order_id = order_items.order_id; 现在我不知道如何在不使用原始查询的情况下使用django以正确的方式执行此操作 那么我应该在这行中添

我有以下数据库关系:

现在,在我的
admin.py
中的
列表显示中
我想显示订单表和订单项目的数量行。为此,我将使用以下sql查询:

SELECT
    order_id, quantity 
FROM
    orders
INNER JOIN
        order_items
    ON
        orders.order_id = order_items.order_id;
现在我不知道如何在不使用原始查询的情况下使用django以正确的方式执行此操作

那么我应该在这行中添加什么呢

list\u display=('order\u id')


要显示数量行?

要获取特定相关订单的订单项目数量,请编写以下代码-

>>> from django.db.models import Sum
>>> order.order_items_set.aggregate(quantity=Sum('quantity'))
它将返回一个类似于-
{'quantity':3}
有关聚合的更多信息,请参阅

为了在您的订单管理模型中显示它-

class OrderAdmin(admin.ModelAdmin):
    list_display = ('id', 'user_id', 'status', 'created_at', 'get_quantity')

    class Meta:
        model = Order

    def get_quantity(self, obj):
        result = obj.order_items_set.aggregate(quantity=Sum('quantity'))
        return result.get('quantity',0)

    get_quantity.short_description = 'Quantity'

admin.site.register(Order, OrderAdmin)

请参阅以了解有关django管理员自定义的更多信息。

要获取特定相关订单的订单项目数量,请编写以下代码-

>>> from django.db.models import Sum
>>> order.order_items_set.aggregate(quantity=Sum('quantity'))
它将返回一个类似于-
{'quantity':3}
有关聚合的更多信息,请参阅

为了在您的订单管理模型中显示它-

class OrderAdmin(admin.ModelAdmin):
    list_display = ('id', 'user_id', 'status', 'created_at', 'get_quantity')

    class Meta:
        model = Order

    def get_quantity(self, obj):
        result = obj.order_items_set.aggregate(quantity=Sum('quantity'))
        return result.get('quantity',0)

    get_quantity.short_description = 'Quantity'

admin.site.register(Order, OrderAdmin)
有关django管理员自定义的更多信息,请参阅