«Базовые классы имеют конфликтующие значения для атрибута» при использовании Python mixin для переопределения метода базового класса - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть django mixin:

class PublicSchemaOnlyAdminAccessMixin:
    def has_view_or_change_permission(self, request, obj=None):
        return connection.schema_name == get_public_schema_name()

    def has_add_permission(self, request):
        return connection.schema_name == get_public_schema_name()

    def has_module_permission(self, request):
        return connection.schema_name == get_public_schema_name()

, который используется во многих моих классах ModelAdmin, например:

class BlockAdmin(PublicSchemaOnlyAdminAccessMixin, admin.ModelAdmin):
    pass

Но я получаю предупреждение об этом структура из LGTM:

Базовые классы имеют конфликтующие значения для атрибута 'has_add_permission': функция has_add_permission и функция has_add_permission.

Однако ни одно из их предложенных решений кажется практичным для этого, так как я использую это примерно в половине моих классов Admin.

Есть ли либо A. Лучший способ разрешить эту структуру плохого кода, либо B. Этот код? хорошая структура (насколько я понимаю, классы читаются справа налево и миксин должен go слева для согласованного поведения)

...