如何在模型中获取应用程序的名称?

时间:2013-05-18 10:17:17

标签: python django

我正在尝试编写模型mixin,这将直接链接到管理员编辑形式:

class EditLinkMixin(models.Model):
    def get_admin_link(self):
        return '/admin/%s/%s/%d/' % (app_name, self.__class__.__name__, self.pk)

    class Meta:
        abstract = True

内容管理员只需点击一下即可编辑某篇文章(如果他有权限)。 问题是:我怎样才能获得app_name?另外,我可以通过某种方式获得主应用程序的名称,它具有模块settings.py并且是项目的入口点吗?它将有助于从某些可重用的应用程序直接访问子类声明...

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

您应该使用Model._meta.app_label

另外:如果你正在创建一个mixin,你不需要从models.Model扩展它并使其抽象化。您可以创建常规类:

class EditLinkMixin(object):
    def get_admin_link(self):
        return '/admin/%s/%s/%d/' % (self._meta.app_name, self.__class__.__name__, self.pk)

class MyModel(models.Model, EditLinkMixin):
    pass