私がやりたいのは、一部のモデルが私のフィールドを使用すると、そのモデルにカスタムマネージャーが自動的に追加されることです。
私の知る限り、contribute_to_class はそのような機能を提供します
class MyCustomField(CharField):
def contribute_to_class(self, cls, name):
super(MyCustomField, self).contribute_to_class(cls, name)
setattr(cls, 'custom_manager', CustomManager())
問題は、カスタム マネージャーで self.model._default_manager を使用してデフォルト マネージャーでクエリを実行することですが、それを実行しようとすると、django は AttributeError: 'NoneType' object has no attribute '_default_manager' と言います。
Contribut_to_class を使用せず、モデル クラスの横にカスタム マネージャーを記述した場合、期待どおりに動作します。何が問題になる可能性がありますか?