我正在尝试编写模型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并且是项目的入口点吗?它将有助于从某些可重用的应用程序直接访问子类声明...
感谢您的建议!
答案 0 :(得分:1)
另外:如果你正在创建一个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