Lazy Class Immobilien Dekorateur
Ich habe ein Django-Modell, das unter Bezugnahme auf das benutzerdefinierte Benutzermodell einige Verarbeitungsschritte ausführen muss.
Ich kann beim Laden der Klasse nicht mit der Klasse dieses Modells arbeiten, da die Ladereihenfolge der Klassen unbekannt ist.
Ich muss also zur Laufzeit einige Klassenattribute hinzufügen, im Moment füge ich sie im hinzu__init__
oder__new__
mögen:
def __new__(cls, *args, **kwargs):
# hack to avoid INSTALLED_APPS initialization conflicts.
# get_user_model() can't be called from this module at class loading time,
# so some class attributes must be added later.
# Metaclasses could me more appropiate but I don't want to override
# dango's metaclasses.
if not hasattr(cls, '_reverse_field_name_to_user'):
cls._find_reverse_field_name_to_user()
return Group.__new__(cls, *args, **kwargs)
Es funktioniert, sieht aber schrecklich aus, also habe ich darüber nachgedacht, so etwas zu verwenden@lazyclassproperty
für diese Attribute.
Ich habe mehrere gefunden@classproperty
und@lazyproperty
Dekorateure, aber nicht einer für beide, und ich habe keine Ahnung, wie ich selbst einen schreiben soll.
Frage: Wie könnte ich einen solchen Dekorateur codieren? oder schlagen Sie eine andere sauberere Alternative zu meiner gegenwärtigen dummen Implementierung vor.