Domanda

Supponiamo che ci siano due (o più) amministratori django che hanno letto un record del database e poi lo cambiano e lo salvano. Non ci sono problemi di database, ma alcuni amministratori saranno sorpresi che il record che hanno scritto sia stato sovrascritto.

Questo problema è mai stato risolto? Un modo sarebbe quello di avere una "modifica in corso" esplicita " pulsante che imposta una bandiera nel record. Se un altro amministratore legge lo stesso record e fa clic sulla sua "modifica in corso" verrà avvisato che è in corso una modifica precedente. Oppure è possibile aggiungere un campo al record che viene incrementato quando un record viene salvato. Se il campo è diverso da quando il record è stato letto, l'amministratore viene avvisato che il record è stato modificato da qualcun altro da quando lo ha letto.

Esiste un modo nativo di django per gestirlo?

È stato utile?

Soluzione

L'amministratore di Django non implementa alcuna protezione dai conflitti di scrittura pronta all'uso. Non sarebbe difficile aggiungerlo da soli. Personalmente, prenderei il campo "numero versione" " approccio.

Altri suggerimenti

In genere è qui che vuoi leggere le funzionalità di isolamento delle transazioni del tuo database, perché è per questo che le ha.

Se preferisci davvero non farlo, esistono vari schemi per farlo a livello di applicazione, ma non esiste un modo canonico per farlo: alcune persone impostano una sorta di "ultimo accesso". data e ora e rifiutare di consentire la modifica entro un determinato periodo, altri impostano i numeri di versione, ecc. ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top