2017-04-03 5 views
0

Ich versuche es so zu machen, dass ein Benutzer angezeigte Informationen in einem Objekt bearbeiten kann, aber diese Bearbeitung wird nicht öffentlich angezeigt, bis ein Administrator die Bearbeitung genehmigt. Diese Änderungen werden in einer Warteschlange gespeichert, die ein Administrator sortieren kann. Zum Beispiel:So implementieren Sie eine Bearbeitungsgenehmigungswarteschlange in Django

class examplemodel(models.Model): 
    text = models.CharField() 

Diese Charfield auf einer Vorlage irgendwo angezeigt wird, wenn ein Benutzer auf einen Link klicken kann, wird der Text eine Form werden zu lassen, die gleichen Informationen enthalten, die, wenn das Formular abgeschickt wird, sendet die Informationen nicht zurück in die Datenbank aber zu einer Warteschlange, die auf der Admin-Seite genehmigt werden soll. Der einzige Weg, um dies jetzt zu tun, ist, ein editRequest-Objekt zu erstellen, mit dem das Formular ein anderes Objekt erstellen und dann eine Genehmigungsfunktion haben kann, die das alte Objekt aktualisiert, wenn es genehmigt ist. In welchem ​​Fall würde ich dies an die Admin-Seite binden?

Antwort

2

Ich würde vorschlagen, ein neues Modell ApprovalPendingUsers mit erforderlichen Feldern zu erstellen und auch ForeignKey für Benutzer in diesem Modell hinzuzufügen. Sie können auch created_time und last_modified_time Felder zum Sortieren hinzufügen. Wenn Benutzer Bearbeitungsformulardetails übermitteln, speichern Sie alles in Ihrem neuen Modell mit Benutzer ForeignKey.

Erstellen Sie eine Listenansicht für admin und geben Sie alle Zeilen Ihres neuen Modells zur Ansicht zurück.

class ApprovalPendingUsersListView(ListView): 
    # template_name and context_object_name 

    def get_queryset(self): 
     return ApprovalPendingUsersModel.objects.all() 

Wenn Admin Klick auf Genehmigung Taste BaseUserModel Details mit ApprovalPendingUsersModel ersetzen und diese Zeile aus ApprovalPendingUsersModel löschen.

Verwenden Sie get_or_create, um die Erstellung vieler ApprovalPendingUsersModel Zeilen zu vermeiden, wenn Benutzer mehr als eine Aktualisierungsanforderung geben.

+0

danke! das, was ich dachte, würde ich tun, wollte nur sehen, ob es irgendwo Django-Funktionalität für das irgendwo eingebaut war – Peter

Verwandte Themen