如何在Django的models.py中获取当前的App名称?

时间:2012-06-11 21:15:09

标签: python django python-2.7 django-1.4

我有一款名为C3po的应用。我正在研究模型“文章”。在这个模型中,我想创建一个ForeignKey字段,其中自定义related_name指向另一个名为Lea的应用程序中的模型。为了确保related_name是唯一的,我想将其命名为“c3po_articles”。但我不想硬编码应用程序名称c3po。如何以动态方式获取文件夹/应用程序名称?我是否使用__file__并将其拆分或是否有更优雅的方法?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

related_name属性支持使用两个变量进行自动字符串插值:app_labelclass。例如:

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