2011-10-19 4 views
0

J'ai 3 tables dans ma base de données SQLite: Utilisateur, Comptes, Mots de passe. L'ID des comptes et mots de passe est un ForeignKey à User.id. Le problème est qu'une instance de l'utilisateur n'a pas d'identifiant tant qu'il n'est pas sauvegardé (et django ajoute le champ primaire). C'est comme ça que j'essaye de le faire, puisque le User.email devrait être unique alors je ne devrais récupérer qu'un seul objet mais ça ne marche pas. Je suis sûr qu'il y a une meilleure façon de le faire. Quand je crée un utilisateur, je veux aussi créer une table Comptes et mots de passe, reliée via un ForeignKey, id, qui est aussi la PrimaryKey.Django: créer des tables liées avec des clés étrangères

def adduser(request): 
    u = User(email=request.POST['email'], username=request.POST['username'], password=request.POST['password']) 
    a = Accounts() 
    u.save() 
    u = User.objects.get(email=request.POST['email']) 
    a.id = u.id 
    a.save() 

Répondre

1

Ceci est beaucoup plus proche de ce que vous voulez.

def adduser(request): 
    u = User(email=request.POST['email'], username=request.POST['username'], password=request.POST['password']) 
    u.save() 
    a = Accounts(
     user=u 
    ) 
    a.save() 
  1. Êtes-vous en utilisant le modèle utilisateur django?

si oui vous voulez réellement ceci:

def adduser(request): 
    u = User(email=request.POST['email'], username=request.POST['username']) 
    u.set_password(request.POST['password']) 
    u.save() 
    a = Accounts(
     user=u 
    ) 
    a.save() 

En outre, plutôt que d'utiliser des variables request.POST partout, avez-vous envisagé d'utiliser les formulaires de django et les services publics de forme? Ils sont plutôt gentils.

+0

Cela semble être seulement 1.3 et j'avais un tas de problèmes avec 1.3 alors j'utilise maintenant 1.2.7 :( – Chris

+0

Rien dans la réponse d'Issac est 1.3 seulement. –

Questions connexes