如何在 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 模板中的另一个字段中更改后禁用复选框?