Frage

Angenommen, es gibt zwei (oder mehr) django-Administratoren, die einen Datenbank-Datensatz gelesen haben und dann und speichern Sie sie ändern. Es gibt keine Datenbank Problem, aber einige Administratoren werden überrascht sein, dass der Datensatz sie schrieb, war überschrieben.

Ist dieses Problem schon einmal angesprochen? Eine Möglichkeit wäre, eine explizite „bearbeiten in progress“ Taste haben, die eine Fahne in den Datensatz. Wenn ein anderer Administrator denselben Datensatz liest und klickt dann auf seine „bearbeiten in progress“ er wird davor gewarnt, dass es eine vorherige Bearbeitung im Gange ist. Oder ein Feld könnte zu dem Datensatz hinzugefügt werden, der erhöht wird, wenn ein Datensatz gespeichert wird. Wenn das Feld unterschiedlich ist, wenn der Datensatz gelesen wurde, wird der Administrator gewarnt, dass der Datensatz von einer anderen Person geändert wurde, da er sie lesen.

Gibt es einen native django Weg, dies zu umgehen?

War es hilfreich?

Lösung

Der Admin Django nicht implementiert keinen Schreibkonflikt Schutz aus dem Kasten heraus. Es wäre nicht schwer, es selbst hinzuzufügen. Ich persönlich würde die „Versionsnummer Feld“ Ansatz.

Andere Tipps

Im Allgemeinen ist dies, wo Sie auf Ihrer Datenbank transaktions Isolation Funktionen lesen wollen, denn das ist, warum es sich hat.

Wenn Sie würde wirklich lieber nicht tun, gibt es verschiedene Muster für diese Schicht bei der Anwendung zu tun, aber es gibt keine kanonische Weg, es zu tun - manche Leute eine Art „letzter Zugriff“ Zeitstempel gesetzt und sich weigern, zu ermöglichen, Bearbeitung innerhalb einer bestimmten Frist nach, dass andere gesetzt Versionsnummern, usw., usw.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top