【问题标题】:Changing name of Foreign Key items at admin page in Django在 Django 的管理页面上更改外键项的名称
【发布时间】:2017-10-28 10:52:01
【问题描述】:

我创建了两个 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 注册到管理站点。将项目添加到表目标时,unit 正确反映了表 Units 中的项目,但在下拉列表中显示为每个条目的名称为 Units objects

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

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    当我开始使用管理屏幕时,我遇到了同样的问题。我不知道是否有更好的方法来做到这一点,但我所做的是修改 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 将在下拉列表中显示每个单元的名称,而不是一遍又一遍地显示“Units”这个词。

    【讨论】:

    • 在这种情况下效果很好(因为单位总是按名称引用)但是我觉得必须有办法通过 admin.py 文件来做到这一点。跨度>
    最近更新 更多