Джанго: общий / многоразовый класс ModelAdmin

0

У меня есть некоторые функции, такие как:

has_delete_permission, 
has_add_permission, 
get_actions, 
formfield_for_foreignkey
get_queryset

Etc - это встроенные функции ModelAdmin, которые я использую практически во всех ModelAdmin в моем проекте.

Как создать общий/многоразовый класс, который включает эти функции и повторное использование в других классах ModelAdmin?

Как передать ссылку класса или класса ModelAdmin на общий класс?

Какова должна быть структура файла, которая должна поддерживаться, если это нужно использовать для многих приложений в проекте.

Некоторое направление будет большой помощью.

Благодарю.

Теги:
django-admin

1 ответ

1
Лучший ответ

Я бы рекомендовал использовать множественное наследование класса Python для достижения этого. Это будет выглядеть примерно так:

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 по этому вопросу. Надеюсь это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню