Account löschen

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

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?
Benutzeravatar
noisefloor
User
Beiträge: 4149
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

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

Gruß, noisefloor
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

wo finde ich das user Modell?
(Vielleicht ist das schon Teil des Problems ...)
Benutzeravatar
sparrow
User
Beiträge: 4501
Registriert: Freitag 17. April 2009, 10:28

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.
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

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?
Benutzeravatar
sparrow
User
Beiträge: 4501
Registriert: Freitag 17. April 2009, 10:28

Du hast doch gefragt, wo du das User Model findest. Und der Import beschreibt das doch.
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

Sorry, ich bin geistig blond und leicht dement :) ... mir reicht die Beschreibung nicht.
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

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
Benutzeravatar
noisefloor
User
Beiträge: 4149
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

@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.
Antworten