我有一个名为 C3po 的应用程序。我正在研究模型“文章”。在这个模型中,我想为另一个名为 Lea 的应用程序中的模型创建一个带有自定义相关名称的 ForeignKey 字段。为了确保related_name 是唯一的,我想将其命名为“c3po_articles”。但我不想硬编码应用名称 c3po。如何以动态方式获取文件夹/应用程序名称?我是使用 __file__ 并拆分它还是有更优雅的方法?
谢谢您的帮助 :)
我有一个名为 C3po 的应用程序。我正在研究模型“文章”。在这个模型中,我想为另一个名为 Lea 的应用程序中的模型创建一个带有自定义相关名称的 ForeignKey 字段。为了确保related_name 是唯一的,我想将其命名为“c3po_articles”。但我不想硬编码应用名称 c3po。如何以动态方式获取文件夹/应用程序名称?我是使用 __file__ 并拆分它还是有更优雅的方法?
谢谢您的帮助 :)
该related_name
属性支持带有两个变量的自动字符串插值:app_label
和class
。例如:
models.ForeignKey(FooModel, related_name='%(app_label)s_%(class)s_foo')
现在,老实说,我不确定 Django 是否会让你只包含一个或另一个,即 just '%(app_label)s_foo'
,但你可以尝试。(仔细查看文档后,我非常怀疑它。似乎两者兼而有之,但仍然,自己测试一下看看。)
请参阅:https ://docs.djangoproject.com/en/dev/topics/db/models/#be-careful-with-related-name
编辑
实际上,在考虑更多之后,对于您的情况,您可以只使用'%(app_label)s_%(class)ss'
,这应该将您c3po_articles
作为related_name
.