首页 > 解决方案 > 如何在 Django Admin.py 中按顺序显示 OrderItem

问题描述

我试图orderitemsadminorderadmin使用 TabularInline 中显示,但我不断收到以下错误。

AttributeError: 'OrderItemAdmin' object has no attribute 'urls'

这是一个 Django 电子商务项目,我正在努力帮助管理员查看订单及其商品。

我认为错误的原因是我无法设置与 OrderItem 和 Order 的外部关系,因为顺序是:Orderitem 与 Item 具有外部关系,而 Order 与 OrderItem 具有多对多关系,如果切换了它们的位置或序列它会弄乱多对多关系。

这是 admin.py

class OrderItemAdmin(admin.TabularInline):
    list_display = ['item', 'quantity', 'ordered']
    model = OrderItem

class OrderAdmin(admin.ModelAdmin):
    list_display = ['user', 'ordered', 'ordered_date', 'coupon', 'payment', 'shipping_address', 'status',
                    'refund_requested', 'refund_granted', 'ref_code']
    inlines = [
        OrderItemAdmin,
    ]
admin.site.register(Order, OrderAdmin)

这是models.py

class OrderItem(models.Model):
    item = models.ForeignKey(Item, on_delete=models.CASCADE)

class Order(models.Model):
    items = models.ManyToManyField(OrderItem)

标签: pythondjango

解决方案


你需要删除

admin.site.register(OrderItem, OrderItemAdmin)

这条线。内联只能在 modelAdmin 中使用,这就是您收到该错误的原因。


推荐阅读