如何在 django、python 中更改管理字段名称

Posted

技术标签:

【中文标题】如何在 django、python 中更改管理字段名称【英文标题】:how to change admin field name in django, python 【发布时间】:2020-02-10 23:08:37 【问题描述】:

我在我的应用程序的models.py 文件中添加了一个模型作者,并为作者创建了模型名称,而我在管理面板中打开它显示为作者对象(12) 我该如何更改它?

我尝试添加 Unicode

class Author(models.Model):
    author_name=models.CharField(max_length=300)

我想要管理面板中的字段名称而不是作者对象。 下面我想更改作者对象

【问题讨论】:

Author 类中覆盖__str__() 方法,这就是python 3 在print 对象时使用的方法。养成为所有模型始终覆盖 __str__ 的习惯。 Django "xxxxxx Object" display customization in admin action sidebar的可能重复 【参考方案1】:

试试这个:

class Author(models.Model):
    author_name=models.CharField(max_length=300)

    def __str__(self):
        return self.author_name

遵循@dirkgroten 所说的“养成始终为所有模型覆盖 str 的习惯”


您也可以在admin.py 中使用list_display 方法来获得类似的结果。创建一个管理类并使用list_display 以表格格式呈现模型的字段

Admin.py

from app.models import Artist      #<-----Import you artist model 

@admin.register(Artist)          #<----- admin class should be just below this line
class ArtistAdmin(admin.ModelAdmin):

    list_display = ["id", "author_name"]

或者您也可以这样做:

from app.models import Artist      #<-----Import you artist model 


class ArtistAdmin(admin.ModelAdmin):
    list_display = ["id", "author_name"]

admin.site.register(Artist, ArtistAdmin)    #<----register your class also

【讨论】:

【参考方案2】:

您可以像这样覆盖 django 模型类中的 __str__ 方法

class Author(models.Model):
    author_name=models.CharField(max_length=300)

    def __str__(self):
        return self.author_name

【讨论】:

【参考方案3】:

这里是覆盖 __str__ 方法的示例,用于像您这样的情况。

class Language(models.Model):
    language = models.CharField(max_length=32)

    class Meta:
        app_label = "languages"
        ordering = ["-modified"]

    def __str__(self):
        return f"self.language (language self.id)"

【讨论】:

:-D 好的。您忘记了“BaseModel”和模型类名称!

以上是关于如何在 django、python 中更改管理字段名称的主要内容,如果未能解决你的问题,请参考以下文章

当浏览器中的值更改时如何刷新 django 管理表单?

我们如何在 django 中更改现有用户表中的字段名称

如何在 django 模板中的另一个字段中更改后禁用复选框?

Django 管理员:自定义排序

Python-Django 如何在管理员中使用 django-ajax-uploader?

如何在 Django Admin 中更改 ForeignKey 显示文本?