2017-05-30 3 views
3

(sorry für mein Englisch)django - begrenzen die Anzahl der Benutzer

nur eine Frage, gibt es eine Möglichkeit, die Anzahl der Benutzer zu beschränken, die in einem Django App erstellt werden kann?

suche ich in vielen Orten und ich dies nur finden, aber ich sehe in dem Repo, die das letzte Update vor 3 Jahren https://github.com/1stvamp/django-limit-users war

Ich weiß nicht, ob irgendeine Art und Weise bestehen im Kern von django oder wenn ich etwas übersteuern muss!

Vielen Dank!

Antwort

1

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_activeover_limit oder was auch immer Sie wollen. Das von Ihnen verknüpfte Repo erreicht dies mit einem separaten DisabledUser Modell.

+0

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

Verwandte Themen