django Benutzermodell und benutzerdefiniertes Primärschlüsselfeld

8

Django erstellt standardmäßig ein Primärschlüsselfeld für jedes Modell mit dem Namen " id " mit dem Typ AutoField . Bei meinen Modellen überschreibe ich, dass ein benutzerdefiniertes UUIDField als Primärschlüssel verwendet wird, indem das Attribut " primary_key " verwendet wird. Ich möchte auch, dass das User -Modell in django.contrib.auth ein UUIDField als Primärschlüssel hat, aber das scheint nicht möglich zu sein, ohne den User -Modell-Quellcode zu ändern.

Gibt es eine empfohlene Methode, um dieses Problem anzugehen?

    
Andrew 04.09.2010, 08:35
quelle

2 Antworten

6
  

Dies scheint nicht möglich zu sein, ohne den Quellcode des Benutzermodells zu ändern.

Richtig. Sofern Sie nicht bereit sind, User zu ändern (oder zu ersetzen), gibt es keinen Weg.

Eine (dünne, hackische) Methode wäre, eine UserProfile für jede User Instanz anzuhängen. Jedes User sollte genau eins UserProfile haben. Sie können dann Ihr UUIDField zum Profil hinzufügen. Sie müssen noch benutzerdefinierte Abfragen durchführen, um von UUIDField nach id zu übersetzen.

Wenn Sie den Namen UserProfile nicht mögen, können Sie ihn entsprechend umbenennen. Der Schlüssel ist, dass Sie eine Eins-zu-Eins-Beziehung zu User haben.

    
Manoj Govindan 04.09.2010, 09:09
quelle
4

Mit der Veröffentlichung von Django 1.5 unterstützt das Authentifizierungs-Backend jetzt benutzerdefinierte Benutzermodelle:

Ссылка

Ein E-Mail-Feld kann als Benutzername-Feld und das primary_key Argument kann darauf eingestellt werden:

%Vor%     
Soviut 10.04.2013 20:46
quelle

Tags und Links