如何更改Django Admin自定义列表字段标签?

48 投票
3 回答
26167 浏览
提问于 2025-04-16 06:50

如何更改 my_stock 的显示名称

在 models.py 文件中:

class Book(models.Model):
    name = models.CharField(u"Нэр", max_length=200)
    stock = models.IntegerField()

    @property
    def my_stock(self):
        return self.stock

在 admin.py 文件中:

class BookAdmin(admin.ModelAdmin):
    list_display  = ('name', 'my_stock')
    search_fields = ('name', )

3 个回答

3

你可以用自定义列 "my_stock",通过调用my_stock()来创建它,然后可以使用@admin.display来给它改个名字,下面是示例:

# "models.py"

class Book(models.Model):
    name = models.CharField(u"Нэр", max_length=200)
    stock = models.IntegerField()

    # @property
    # def in_stock(self):
    #     return self.stocks.count()
# "admin.py"

class BookAdmin(admin.ModelAdmin):
    list_display  = ('name', 'my_stock')
    search_fields = ('name', )
                                     # ↓ Displayed 
    @admin.display(description='Your label here')
    def my_stock(self, obj):
        return obj.stock
5

把你的模型和verbose_name参数改成field。我把“author”的标签改成了“Author(s)”。

在models.py文件里

class books(models.Model):
    title = models.CharField(max_length = 250)
    author= models.CharField(max_length = 250, verbose_name='Author(s)')

或者简单点

author      = models.CharField('Author(s)',max_length = 250)
71

我想你应该使用短描述这个属性。Django-admin

def my_stock(self):
    return self.stock
my_stock.short_description = 'Your label here'

撰写回答