2017-09-16 56 views
-1

我有一些功能,如:Django的:通用/可重複使用的ModelAdmin類

has_delete_permission, 
has_add_permission, 
get_actions, 
formfield_for_foreignkey 
get_queryset 

等都是內置的,我正在使用幾乎所有的ModelsAdmin在我的項目的ModelAdmin功能。

如何創建一個包含這些函數並在其他ModelAdmin類中重用的公共/可重用類?

如何將Model或ModelAdmin類的引用傳遞給公共類?

如果必須爲項目中的許多應用程序使用此文件結構,應該維護什麼文件結構。

某些方向會有很大的幫助。

謝謝。

回答

0

我建議使用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 

對於一些有關使用基於類的意見混入,看一看的Django docs on the subject。希望這可以幫助!