Django:Common / Reusable ModelAdmin类

时间:2017-09-16 16:02:34

标签: django django-admin

我有一些功能,如:

has_delete_permission, 
has_add_permission, 
get_actions, 
formfield_for_foreignkey
get_queryset

Etc是我在项目中几乎所有ModelsAdmin中使用的内置ModelAdmin函数。

如何创建包含这些函数的公共/可重用类,并在其他ModelAdmin类中重用?

如何将Model或ModelAdmin类的引用传递给公共类?

如果必须将这个文件结构用于项目中的许多应用程序,那么应该保留哪些文件结构。

某些方向会有很大的帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

我建议使用Python的类multiple inheritance来实现这一目标。它看起来像这样:

from django.contrib import admin

from .models import Banana


class MyAdminMixin:
    def has_delete_permission(self, obj):
        # Your code goes here

    def has_add_permission(self, obj):
        # Your code goes here


class BananaModelAdmin(MyAdminMixin, admin.ModelAdmin):
    # Now your admin has access to the methods in MyAdminMixin
    model = Banana

有关将mixins与基于类的视图一起使用的更多信息,请查看Django docs on the subject。希望这有帮助!