【问题标题】:How to show foreign key field value instead of id in Django admin?如何在 Django admin 中显示外键字段值而不是 id?
【发布时间】:2021-08-01 13:39:38
【问题描述】:
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。

如何做到这一点?

【问题讨论】:

    标签: django django-models django-admin


    【解决方案1】:

    试试这个方法: 您将从 __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 个字段来获得相同的结果?您的 Info 模型应该是:

    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)
    

    【讨论】:

    • 但是 Info 模型的 'country_code' 字段呢?
    • @JasmeetPabla 当您使用外键将您的国家/地区模型与您的信息相关联时,该模型的所有字段也与其相关联,您可以将其称为 {{ info.country.name }}跨度>
    猜你喜欢
    • 2020-08-19
    • 2019-06-26
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    相关资源
    最近更新 更多