Seite 1 von 1

Account löschen

Verfasst: Freitag 21. Februar 2025, 16:26
von Pitwheazle
In meinem Rechentrainer habe ich den, von Django zur Verfügung gestellten, Useraccount und ein mit OnetoOne verknüpfte Tabelle "Profil". Dieses kann ich per Code ohne Probleme löschen.

Code: Alles auswählen

                                profil = Profil.objects.get(id = user.profil.id)
                                profil.delete()
                                print(user)
                                # user.groups.clear()
                                # user.delete()
Um aber auch den Username wieder frei zu bekommen, möchte ich auch den zugehörigen Account löschen. "print(user)" gibt den richtigen User aus, das Löschen gelingt nicht, ich erhalte die Fehlermeldung

Code: Alles auswählen

FOREIGN KEY constraint failed
Durch Suche danach im Internet habe ich den Tipp gefunden, dass ich für das Löschen eine "on_delete" Anweisung angeben müsse. Wie mache ich das in diesem Fall?

Re: Account löschen

Verfasst: Freitag 21. Februar 2025, 19:32
von noisefloor
Hallo,

poste mal bitte die zugehörigen Modelle und die _volle_ Fehlermeldung, die bei `user.delete()` kommt.

Gruß, noisefloor

Re: Account löschen

Verfasst: Freitag 21. Februar 2025, 20:56
von Pitwheazle
wo finde ich das user Modell?
(Vielleicht ist das schon Teil des Problems ...)

Re: Account löschen

Verfasst: Freitag 21. Februar 2025, 21:40
von sparrow
Da, woher du es importierst.

Und es schein in anderen Modellen Felder zu geben, die per ForeignKey auf den User verweisen. Und wenn du denen nicht gesagt hast, dass sie kaskadierend mitgelöscht werden sollen oder auf einen anderen Wert geändert werden sollen, dann schützt die Datenbank das Ziel des Fremschlüssels.

Re: Account löschen

Verfasst: Freitag 21. Februar 2025, 21:45
von Pitwheazle
Danke, das zweite leuchtet mir ein. Aber hilf mir doch mit der ersten Aussage weiter:
Wie hilft mir

Code: Alles auswählen

from django.contrib.auth.models import User, Group
weiter?

Re: Account löschen

Verfasst: Freitag 21. Februar 2025, 22:21
von sparrow
Du hast doch gefragt, wo du das User Model findest. Und der Import beschreibt das doch.

Re: Account löschen

Verfasst: Freitag 21. Februar 2025, 22:23
von Pitwheazle
Sorry, ich bin geistig blond und leicht dement :) ... mir reicht die Beschreibung nicht.

Re: Account löschen

Verfasst: Freitag 21. Februar 2025, 22:42
von Pitwheazle
OK, ich habe den Speicherplatz gefunden, das ist aber nicht ganz trivial - hätte ich das wissen müssen?
Speicherplatz für user.model: C:\Users\meinname\AppData\Local\Programs\Python\Python310\Lib\site-packages\django\contrib\auth

Re: Account löschen

Verfasst: Samstag 22. Februar 2025, 09:04
von noisefloor
Hallo,

das User-Model kommt von Django, das meine ich auch nicht. Ich meine dein Profil-Model, was 1:1 mit dem User verknüpft ist, was du zeigen solltest. Und der volle Stacktrace, wenn du user.delete() ausführst, steht auch noch aus.

Gruß, noisefloor

Re: Account löschen

Verfasst: Samstag 22. Februar 2025, 15:46
von Pitwheazle
@noisefloor: Die Hinweise von sparrow haben mir schon geholfen das Problem zu lösen.
Und die Suche nach dem user Modell hat mir viele Erkenntnise gebracht und ich weiß jetzt endlich was sich hinter "import" Befehlen wie

Code: Alles auswählen

from django.contrib.auth.models import User, Group
verbirgt und mir endlich mal den dortigen Code anschauen. ... Na ja, muss man halt erstmal wissen.