Как я могу передавать данные в админпанель django
Я создаю сайт электронной коммерции, но хочу знать, как я могу отобразить имя_продукта или имя_клиента в панели администратора.
Концепция заключается в том, что если клиент размещает заказ, то он попадает в панель администратора. Поэтому все остальные детали отображаются правильно, кроме названия товара или названия пользовательского набора.
Как показано на следующем изображении:
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)
