Как показать поля FK в админке? DJANGO

Я разрабатываю сайт электронной коммерции и пытаюсь показать в ADMIN связанный с 'produto_nome' в моей таблице 'Ordem'. Пока что в моем админе в таблице 'Ordem' отображается только id каждого объекта. Возможно ли показать поле 'produto_nome' в этой таблице?

Ниже представлены мои модели

class Categoria(models.Model):
    nome = models.CharField(max_length=50)

def __str__(self):
    return self.nome


class Produto(models.Model):
     produto_nome = models.CharField(max_length=70)
     preco = models.IntegerField()
     quantidade_em_estoque = models.IntegerField()
     quantidade_vendida = models.IntegerField()
     categoria = models.ForeignKey(Categoria, on_delete=models.CASCADE)
     descricao = models.TextField(default='', blank=True, null=True)
     slug = models.SlugField(unique=True)
     image = models.ImageField(upload_to="products/%Y/%m/%d", blank=True, null=True)

def __str__(self):
    return self.produto_nome


def get_absolute_url(self):
    return reverse('produto:produto_detail', kwargs={'slug': self.slug})


class Ordem(models.Model):
    user = models.ForeignKey(CustomUser, on_delete=models.SET_NULL, blank=True, null=True)
    data_pedido = models.DateTimeField(auto_now_add=True, null=True, blank=True)
    enviado = models.BooleanField(default=False, null=True, blank=True)
    transaction_id = models.CharField(max_length=200, null=True)

def __str__(self):
    return str(self.id)

def get_total_preco(self):
    total = 0
    for pedido in self.produtos_itens.all():
        total += pedido.get_total_item_preco()
    return total


class OrdemItem(models.Model):
     produto = models.ForeignKey(Produto, on_delete=models.SET_NULL, blank=True, null=True)
     ordem = models.ForeignKey(Ordem, on_delete=models.SET_NULL, blank=True, null=True)
     quantidade = models.IntegerField(default=0, null=True, blank=True)
     data_add = models.DateTimeField(auto_now_add=True, null=True, blank=True)

def __str__(self):
    return f'{self.quantidade} unidade de {self.produto.produto_nome}'

def get_total_item_preco(self):
    return self.quantidade * self.produto.preco

Я добавил метод в моей модели 'Ordem' для возврата 'produto_nome'. А затем я вызвал в своем админе

models.py

class Ordem(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.SET_NULL, blank=True, null=True)
data_pedido = models.DateTimeField(auto_now_add=True, null=True, blank=True)
enviado = models.BooleanField(default=False, null=True, blank=True)
transaction_id = models.CharField(max_length=200, null=True)

def __str__(self):
    return str(self.id)

def produtos(self):
    return list(OrdemItem.objects.filter(ordem__id=self.id))

def get_total_preco(self):
    total = 0
    for pedido in self.produtos_itens.all():
        total += pedido.get_total_item_preco()
    return total

admin.py

class OrdemAdmin(admin.ModelAdmin):
     list_display= ('id', 'enviado', 'produtos')



admin.site.register(Categoria)
admin.site.register(Produto, ProdutoAdmin)
admin.site.register(OrdemItem)
admin.site.register(Ordem, OrdemAdmin)
Вернуться на верх