我有一款名为C3po的应用。我正在研究模型“文章”。在这个模型中,我想创建一个ForeignKey字段,其中自定义related_name指向另一个名为Lea的应用程序中的模型。为了确保related_name是唯一的,我想将其命名为“c3po_articles”。但我不想硬编码应用程序名称c3po。如何以动态方式获取文件夹/应用程序名称?我是否使用__file__并将其拆分或是否有更优雅的方法?
感谢您的帮助:)
答案 0 :(得分:0)
related_name
属性支持使用两个变量进行自动字符串插值:app_label
和class
。例如:
models.ForeignKey(FooModel, related_name='%(app_label)s_%(class)s_foo')
现在,老实说,我不确定Django是否会让你只包括其中一个,即'%(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
。