Django:如何在不导入模型的情况下用_meta指定verbose_name?

戴维·D

这是一个简单的模型定义,使用导入作为外键:

from companies.models.owner_company import OwnerCompany

class Restaurant(models.Model):
    owner_company = models.ForeignKey(OwnerCompany,
                                      on_delete=models.PROTECT,
                                      verbose_name=OwnerCompany._meta.verbose_name)

假设现在,我需要在不导入OwnerCompany对象的情况下对其进行定义在这种情况下,您将如何定义verbose_name?

class Restaurant(models.Model):
    owner_company = models.ForeignKey('companies.OwnerCompany',
                                      on_delete=models.PROTECT,
                                      verbose_name='???')
威廉·范昂塞姆

您可以创建一个“代理对象”,以str(..)返回详细名称。例如:

from django.apps import apps

class VerboseName:

    def __init__(self, app_name, model_name=None):
        if self.model_name is None:
            self.app_name, self.model_name = app_name.split('.', 1)
        else:
            self.app_name = app_name
            self.model_name = model_name

    def __str__(self):
        return str(apps.get_model(self.app_name, self.model_name)._meta.verbose_name)

然后我们可以使用这个VerboseName对象:

class Restaurant(models.Model):
    owner_company = models.ForeignKey(
        'companies.OwnerCompany',
        on_delete=models.PROTECT,
        verbose_name=VerboseName('companies', 'OwnerCompany')
    )

或带点:

class Restaurant(models.Model):
    owner_company = models.ForeignKey(
        'companies.OwnerCompany',
        on_delete=models.PROTECT,
        verbose_name=VerboseName('companies.OwnerCompany')
    )

但是,此处需要应用程序的名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不导入的情况下检查python模块是否存在

如何在不导入的情况下模仿Python模块?

如何在不导入模块的情况下运行模块?

如何在不创建模型的情况下插入对模型的引用?

Vue:vuetify如何在不导入的情况下使其组件可用?

如何在Django中为外部应用程序模型设置verbose_name?

如何在不访问数据库的情况下创建具有延迟字段的Django模型实例?

Django:如何覆盖模型字段的verbose_name和help_text

Django 2.1-在ListView中从meta显示模型verbose_name

如何在不初始化权重的情况下导入经过训练的模型

如何在基于类的视图中调用模型verbose_name

如何在不导入Julia的功能的情况下加载软件包模块

在webpack上,如何在不评估脚本的情况下导入脚本?

如何在不破坏整个应用程序的情况下用Django模型中的多对多替换外键?

如何在不覆盖当前记录的情况下预填充并保存Django模型记录?

如何在不导入RAM的情况下使用numpy文件?

如何在不导入的情况下从已编译的Python模块获取函数名?

如何在不导入数据和Oracle约束的情况下复制表?

如何强制django ModelForm使用模型中的“ verbose_name”作为标签?

如何在不执行python -m的情况下使用相对导入?

如何在不指定插件的情况下从我的工作区导入插件项目?

XSD:如何在不导入元素的情况下从外部 XSD 引用类型?

Django:如何在不呈现反斜杠的情况下序列化模型的文本字段

如何在不指定final的情况下访问变量?

如何在不导入库的情况下获得 VS Code/打字稿自动完成

如何在不导入“library_name”的情况下将代码从库放置到我的项目中

rollup.js 如何在不更改源文件的情况下导入其他文件

如何在不导入pollyfills的情况下以角度显示不支持的Internet Explorer

如何在forms.py Django中添加一个verbose_name?