Geht das, indem ich das CASCADE durch Set(..) ersetze? Oder muss ich zunächst den Namen auslesen und dann das Feld "user" auf Null setzen?class Geloescht(models.Model):
user = models.OneToOneField(User, related_name='geloescht', on_delete=models.CASCADE, )
OneToOne field durch name ersetzen
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Ich habe das Löschen von usern protokolliert. Jetzt möchte ich aber dafür sorgen, dass beim Löschen die Relation durch den Anmeldenamen des user ersetzt wird.
Das macht keinen Sinn.
Das ist ein OneToOne Field - beinhaltet also einen Fremdschlüssel auf einen anderen Datensatz.
Je nach Datenbank könntest du die Constraints umbiegen, damit die nicht geprüft werden. Aber das ist in diesem Fall Unsinn.
Auch wenn es in der Normalform Relationaler Datenbank unterlassen werden muss, Daten redundant zu speichern, gehört hier ein weiteres Feld in das Model, das die entsprechende Information vorhält.
Das OneToOne-Field muss dann entsprechend nullable sein und on_delete hat einen Wert um das beim Löschen zu setzen.
Deine nach wie vor schlechte Art Namen zu verwenden, sorgt leider dafür, dass der geneigte Leser keine Ahnung hat, welche Bedeutung das Model "Geloescht" hat und ob es überhaupt sinnvoll ist, hier eine OneToOne-Relation zu verwenden.
Das ist ein OneToOne Field - beinhaltet also einen Fremdschlüssel auf einen anderen Datensatz.
Je nach Datenbank könntest du die Constraints umbiegen, damit die nicht geprüft werden. Aber das ist in diesem Fall Unsinn.
Auch wenn es in der Normalform Relationaler Datenbank unterlassen werden muss, Daten redundant zu speichern, gehört hier ein weiteres Feld in das Model, das die entsprechende Information vorhält.
Das OneToOne-Field muss dann entsprechend nullable sein und on_delete hat einen Wert um das beim Löschen zu setzen.
Deine nach wie vor schlechte Art Namen zu verwenden, sorgt leider dafür, dass der geneigte Leser keine Ahnung hat, welche Bedeutung das Model "Geloescht" hat und ob es überhaupt sinnvoll ist, hier eine OneToOne-Relation zu verwenden.