Как сделать так, чтобы связанные модели были напрямую связаны с ModelAdmin в панели администратора?

как сделать так, чтобы оператору сайта было удобнее обрабатывать заказ, можно ли сделать так, чтобы каждый пункт заказа и адрес доставки, связанные с заказом, находились под каждым "Заказом" в панели администратора? например, когда кто-то нажимает на заказ, он видит данные заказа и может прокрутить страницу и увидеть пункт заказа и адрес доставки, буду очень признателен за вашу помощь, спасибо!

models.py

class Order(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
    date_ordered = models.DateTimeField(auto_now_add=True)
    complete = models.BooleanField(default=False)
    transaction_id = models.CharField(max_length=100, null=True)


class OrderItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, blank=True, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, blank=True, null=True)
    quantity = models.IntegerField(default=0)
    date_added = models.DateTimeField(auto_now_add=True)

    status = models.CharField(max_length=40, choices=STATUS_CHOICES, default="Order Placed")
    tracking_no = models.CharField(max_length=300, null=True, blank=True)



class ShippingAddress(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, blank=True, null=True)
    address_one = models.CharField(max_length=200)
    city = models.CharField(max_length=200)
    country = models.CharField(max_length=300)
    zipcode = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)

как это выглядит сейчас:

admin.py

admin.site.register(Order, OrderAdmin)
admin.site.register(OrderItem, OrderItemAdmin)
admin.site.register(ShippingAddress, ShippingAddressAdmin)

Это будет решение, которое работает для вас

class OrderItemAdmin(admin.StackedInline):
    model = OrderItem

class ShippingAddressAdmin(admin.StackedInline):
    model = ShippingAddress

class OrderAdmin(admin.ModelAdmin):
    inlines = [OrderItemAdmin, ShippingAddressAdmin]

admin.site.register(Order, OrderAdmin)

Это хорошо документировано здесь: https://docs.djangoproject.com/en/stable/ref/contrib/admin/#inlinemodeladmin-objects

Вернуться на верх