2

我想知道是否可以在 Django 管理应用主页上添加一个计数器,

例子:

在此处输入图像描述

我可以为此在 models.py 或 admin.py 中创建一个@property 吗?

谢谢

4

3 回答 3

3

尝试修改Model._meta.verbose_name

在您的 admin.py 文件中:

from app.models import CouponModel

CouponModel._meta.verbose_name_plural = "Used Coupons ( %s ) " % CouponModel.objects.all().count()

我测试了它并且它有效,不知道它有多聪明。

于 2013-01-08T15:11:22.277 回答
3

您可以专门化字符串类型以添加​​所需的动态行为。

这是一个完整的例子:

from django.db import models

class VerboseName(str):
    def __init__(self, func):
        self.func = func

    def decode(self, encoding, erros):
        return self.func().decode(encoding, erros)

class UsedCoupons(models.Model):
    name = models.CharField(max_length=10)

    class Meta:
        verbose_name_plural = VerboseName(lambda: u"Used Coupons (%d)" % UsedCoupons.objects.all().count())
于 2013-01-10T12:34:33.743 回答
0

我认为你不能在 Meta 中做到这一点,因为它需要一个动态值。修改 Meta 也会在您使用模型的所有地方进行更改,而不仅仅是管理员。我认为最好的主意是使用这样的东西https://stackoverflow.com/a/6312798/1433029或使用 django 管理工具https://bitbucket.org/izi/django-admin-tools/

于 2013-01-08T15:10:40.410 回答