Как показать свойство связанной модели в Django admin? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть две модели, Розничный продавец и Продукт вот так:

class Retailer(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)
    website = models.CharField(max_length=255)
    description =  models.TextField(default=None, null=True)

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

class Product(models.Model):
    id = models.AutoField(primary_key=True)
    price = models.IntegerField(default=None, null=True)
    retailer = models.ForeignKey(Retailer,on_delete=models.CASCADE,related_name='products')
    is_active = models.BooleanField(default=False)
    def __str__(self):
        return str(self.retailer) + ' - ' + str(self.price)

Теперь я получаю вот что:

enter image description here

Но то, что я хочу, это показать имя продавца вместо идентификатора продавца в Django admin, что мне делать?

1 Ответ

1 голос
/ 17 апреля 2020

Где у вас есть

class Retailer(models.Model):
    def __str__(self):
        return str(self.id)

измените его, чтобы вернуть имя, return self.name, например:

class Retailer(models.Model):
    def __str__(self):
        return self.name

Когда вы делаете str(self.retailer), он использует эту функцию, чтобы выяснить, что вернуть. str(self.retailer) в основном делает self.retailer.__str__()

...