如何在Django admin中显示外键字段值而不是id?

时间:2021-08-01 13:39:38

标签: django django-models django-admin

class Country(models.Model):
    name = models.CharField(max_length=100)
    code = models.CharField(max_length=100)

class Info(models.Model)
    country_name = models.ForeignKey(Country, on_delete=models.CASCADE)    
    country_code = models.ForeignKey(Country, on_delete=models.CASCADE)    
    info = models.CharField(max_length=100)

在管理界面中,在'Info'模型中添加对象时,'country_name'字段默认显示国家/地区ID。但我想显示国家/地区名称而不是 ID。

同样,'Info' 模型的'country_code' 字段也默认显示国家/地区的 ID。但我想显示国家/地区代码而不是 ID。

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

试试这个: 您将从 __str__ 返回的值将显示在 admin 中。

class Country(models.Model):
    name = models.CharField(max_length=100)
    code = models.CharField(max_length=100)
    def __str__(self):
        return self.name

class Info(models.Model)
    country_name = models.ForeignKey(Country, on_delete=models.CASCADE)    
    country_code = models.ForeignKey(Country, on_delete=models.CASCADE)    
    info = models.CharField(max_length=100)
    def __str__(self):
        return str(self.country_name.name)

为什么要使用 2 个字段来获得相同的结果?您的信息模型应该是:

class Info(models.Model)
    country_name = models.ForeignKey(Country, on_delete=models.CASCADE)       
    info = models.CharField(max_length=100)
    def __str__(self):
        return str(self.country_name.code)