Vala Khosravi
Vala Khosravi

Reputation: 2570

How can I show related model property in Django admin?

I have two models, Retailer and Product like this:

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)

Now what I get is this:

enter image description here

But what I want is showing Retailer name instead of Retailer id in Django admin, what should I do?

Upvotes: 0

Views: 31

Answers (1)

Zev
Zev

Reputation: 3491

Where you have

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

change it to return the name, return self.name like this:

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

When you do str(self.retailer) it uses that function to figure out what to return. str(self.retailer) basically does self.retailer.__str__()

Upvotes: 1

Related Questions