Während ich keine Zeit https://github.com/1stvamp/django-limit-users gegen eine neue Django zu testen, geht es in der richtigen Richtung Djangos Signale mit: https://docs.djangoproject.com/en/dev/ref/signals/
So zum Beispiel, könnten Sie einen pre_save
oder einen post_save
Handler schreiben und es verbinden zu den Signalen, die vor/nach dem Speichern Ihres Benutzermodells ausgegeben werden.
Eine einfache post_save
Handler könnte wie folgt aussehen:
def user_post_save(sender, instance, created, **kwargs):
if created and sender.objects.count() > MY_LIMIT:
instance.is_active = False
instance.save()
Eine einfache pre_save
Handler aussehen würde:
def user_pre_save(sender, instance, **kwargs):
if instance.id is None and sender.objects.count() > MY_LIMIT:
instance.is_active = False # Make sure the user isn't active
Anstelle der letzten Zeile in der pre_save
Handler, können Sie auch eine Ausnahme auslösen um sicherzustellen, dass der Benutzer nicht einmal in der Datenbank gespeichert wird.
Eine andere Möglichkeit wäre, dies mit einem benutzerdefinierten Benutzermodell zu kombinieren, so dass anstelle von is_active
over_limit
oder was auch immer Sie wollen. Das von Ihnen verknüpfte Repo erreicht dies mit einem separaten DisabledUser
Modell.
Jetzt ist sehr spät, aber morgen werde ich django-Limit-Benutzer versuchen, wenn nicht arbeiten, machen Sie es zu meinem eigenen. Vielen Dank !!! – GAMES