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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage