Как я могу передавать данные в админпанель django

Я создаю сайт электронной коммерции, но хочу знать, как я могу отобразить имя_продукта или имя_клиента в панели администратора.

Концепция заключается в том, что если клиент размещает заказ, то он попадает в панель администратора. Поэтому все остальные детали отображаются правильно, кроме названия товара или названия пользовательского набора.

Как показано на следующем изображении:

enter image description here

models.py

class Order(models.Model):
        product = models.ForeignKey(Product, on_delete=models.CASCADE)
        customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
        quantity = models.IntegerField(default=1)
        address = models.CharField(max_length=50, default='', blank=True)
        phone = models.CharField(max_length=50, default='', blank=True)
        price = models.IntegerField()
        date = models.DateField(default=datetime.datetime.today)
        status = models.BooleanField(default=False)

admin.py

class AdminOrders(admin.ModelAdmin):
    list_display = ['product', 'customer', 'quantity', 'address', 'phone', 'price', 'date', 'status']

Вам необходимо определить метод __str__ в моделях Product и Customer

Пример:

def __str__(self):
    return self.name

Пробовал двойное подчеркивание для доступа к иностранному полю элемента (product__name) и (customer__name).

class Product(models.Model): name= models.CharField(max_length=50, default='', blank=True) .... class Customer(models.Model): name= models.CharField(max_length=50, default='', blank=True) ....

class AdminOrders(admin.ModelAdmin): list_display = ['product__name', 'customer__name', 'quantity', 'address', 'phone', 'price', 'date', 'status']

Если вы вызываете функцию, она должна вернуть строку, если вы хотите отобразить ее в виде слова. Я знаю 2 способа сделать это Первый - метод repr

def __repr__(self):
     return self.(Model You wanna Display)

или str Ведьма - это почти то же самое

def __str__(self):
     return self.(Model You wanna Display)
       
Вернуться на верх