django 复数化 functional.__proxy__object 而不是 verbose_name

标签 django

我正在尝试创建一条使用某种复数形式的消息。消息如下所示,取决于已删除对象的数量。

已成功删除 [对象数量] 个联系人

因此输出可以是:

已成功删除 1 个联系人 成功删除5个联系人

为了完成这项任务,我遵循了下面引用的多元化文档:

pluralization

我在 View 中的代码:

count = returned_objects.count()
    if count == 1:
        name = model._meta.verbose_name
    else:
        name = model._meta.verbose_name_plural

    text = ungettext(
         'Successfully deleted %(count)d %(name)s .',
         'Successfully deleted %(count)d %(name)s .',
         count
    ) % {
        'count': count,
        'name': name
    }
    print text

我在模型中的代码:

class Meta:
        verbose_name = _('contact')
        verbose_name_plural = _('contacts')

现在的结果是“成功删除了 1 个 django.utils.functional.proxy object at 0x014D9B70”

我想知道为什么我没有得到 verbose_name 作为输出。相反,我将 django.utils.functional.proxy 对象作为名称的输出。

最佳答案

当您查看代理对象时,您会发现它是类字符串类的代理对象。

尝试使用 model._meta.verbose_name_plural.title() 从代理对象中获取字符串。

关于django 复数化 functional.__proxy__object 而不是 verbose_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980186/

相关文章:

django - 如何找出 request.session sessionid 并将其用作变量?

python - 模块 'qrcode' 没有属性 'make'

python - 如何在管理更新方法中从 Django 查询集中提取 id?

python - 覆盖 Django Rest 中的 authToken View

django AND on Q 不适用于多对多

django - SVN 更新后 Hook ?

django - 使用 mod_python 设置 Django,使用 Alias 在 SuSE 上设置 Apache

re_path 的 Django 模板 url NoReverseMatch

django - AWS Boto3 兼容性问题,如何安装旧版本的 Boto3?

python - 如何在远程系统上配置和运行 celery worker