Anstatt Datensätze in meiner Django-Anwendung zu löschen, möchte ich sie nur als "gelöscht" markieren und sie vor meinen aktiven Abfragen verbergen. Mein Hauptgrund dafür ist, dem Benutzer eine Undelete-Option zu geben, falls er versehentlich einen Datensatz löscht (diese Datensätze können auch für bestimmte Backend-Überwachungsnachverfolgung erforderlich sein).Wie kann ich Datensätze in Django-Modellen einfach als gelöscht markieren, anstatt sie tatsächlich zu löschen?
Es gibt viele Fremdschlüsselbeziehungen, also wann Ich markiere einen Datensatz als gelöscht. Ich müsste dieses Lösch-Flag auch auf diese Datensätze "kaskadieren". Welche Tools, bestehenden Projekte oder Methoden sollte ich verwenden?
aber ich glaube nicht, dass Suchen von anderen Objekten dies respektieren. Wenn Sie beispielsweise von einem verwandten Modell aus suchen, wird der Manager verwendet, der gelöschte Datensätze ignoriert. Das bedeutet, dass Datensätze, die als gelöscht markiert sind, ihre Beziehungen noch intakt haben - was wahrscheinlich nicht das ist, was Sie wollen. – fastmultiplication
@fastmultiplication Durch "es wird den Manager verwenden, der gelöschte Datensätze ignoriert", meinen Sie, dass es das gelöschte Flag ignorieren wird, d. H. Es wird Datensätze löschen enthalten? Das ist das Verhalten, das ich sehe. –
rechts. Die Verwendung von Managern, um zu steuern, auf welche Objekte zugegriffen werden kann, funktioniert nur, wenn Sie diese Klasse verwenden. Angenommen, Klasse A verwendet einen Manager, um "gelöschte" Objekte auszublenden, dann werden "A.Objekte" die gelöschten ausblenden. Aber wenn A zu Klasse B gehört, dann wird 'B.filter (a__name = 'smith')', alle A-Objekte durchsuchen, sogar gelöschte. – fastmultiplication