Вы могли бы сделать что-то вроде:
if hasattr(cls, 'objects'):
if cls.objects.__class__ == models.Manager:
# default manager, override
cls.add_to_class('objects', TranslationManager()
else:
# there is a custom manager, don't override
class CombinedManager(cls.objects.__class__, TranslationManager):
pass
cls.add_to_class('objects', CombinedManager())
Но вы должны быть очень осторожны с пространством имен, в частности, конфликты, которые могут возникнуть между первоначальным менеджером и вашим TranslationManager
.В общем, лучше предоставить конечному пользователю возможность определить, хотят ли они, чтобы их собственный менеджер также включал TranslationManager
.
Я бы порекомендовал просто поместить его в документацию, которая TranslationManager
будет добавлен в качестве менеджера по умолчанию, если пользовательский менеджер отсутствует.В противном случае пользователь должен иметь свой собственный менеджер, наследуемый от TranslationManager
, чтобы получить эту функциональность.