Reputation: 2570
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:
But what I want is showing Retailer name instead of Retailer id in Django admin, what should I do?
Upvotes: 0
Views: 31
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