在Django的管理页面更改外键项的名称

时间:2017-10-28 10:52:01

标签: django django-models

我创建了两个Django模型,一个模型的字段是另一个模型的外键(如下所示)。

class Units(models.Model):
    name = models.CharField(max_length=10, primary_key=True)
    symbol = models.CharField(max_length=5)


class Targets(models.Model):
    name = models.CharField(max_length=100)
    unit = models.ForeignKey(MicroNutrientUnits)
    ...

然后通过admin.site.register将这些模型注册到管理站点。向表格添加项目时,目标单元正确反映了表单位中的项目,但是在每个条目的名称为单位对象的下拉列表中都有表示。

如何在admin配置页面的 Units.name 的管理下拉列表中设置名称?

1 个答案:

答案 0 :(得分:2)

当我开始使用管理员屏幕时,我遇到了同样的问题。我不知道是否有更好的方法可以做到这一点,但我所做的是修改models.py文件,告诉我的类作为默认字符串返回什么。在您的情况下,我要做的是将以下内容添加到您的Units类定义中。

class Units(models.Model):
    name = models.CharField(max_length=10, primary_key=True)
    symbol = models.CharField(max_length=5)

    def __str__(self):
        return self.name

这样,当您使用表格的外键链接时,django将在下拉列表中显示每个单位的名称,而不是一遍又一遍地显示单词“单位”。