0

我正在尝试编写模型混合,这将给我直接链接到管理员编辑表单:

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 并且是项目的入口点吗?这将有助于从一些可重用的应用程序直接访问子类声明......

感谢您的建议!

4

1 回答 1

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
于 2013-05-18T11:48:37.553 回答