2010-07-06 6 views
2

J'utilise module contrib.auth intégré de django et ont la configuration d'une relation de clé étrangère à un utilisateur quand un « post » est ajouté:clé étrangère à la table utilisateur dans django

class Post(models.Model): 
    owner = models.ForeignKey('User') 
    # ... etc. 

Maintenant, quand il s'agit d'ajouter réellement le Post, je ne sais pas quoi fournir dans le champ propriétaire avant d'appeler save(). Je m'attendais à quelque chose comme un identifiant dans la session de l'utilisateur, mais j'ai remarqué que l'utilisateur n'a pas un user_id ou un attribut id. Quelles données dois-je extraire de la session authentifiée de l'utilisateur pour remplir le champ propriétaire? J'ai essayé de voir ce qui se passe dans la table de la base de données, mais pas encore sur la configuration de sqlite.

Merci pour toute aide ...

+0

Je voudrais savoir comment ajouter l'utilisateur dans le champ Foreignkey dans mon modèle. Je ne sais pas si j'obtiens la réponse ci-dessous. –

Répondre

4

Vous souhaitez fournir un objet « Utilisateur ». C'est à dire. le même genre de chose que vous obtiendriez de User.objects.get (pk = 13).

Si vous utilisez les composants d'authentification de Django, l'utilisateur est également attaché à l'objet de la demande, et vous pouvez l'utiliser directement à partir de votre code de la vue:

request.user 

Si l'utilisateur ne authentifié, Django renverra une instance de django.contrib.auth.models.AnonymousUser. (par http://docs.djangoproject.com/en/dev/ref/request-response/#attributes)

+0

J'utilise décorateur @login_required avant cela si tout va bien l'utilisateur devrait toujours être authentifié. Tout à fait différent de ce que je sais de PHP ... merci pour l'aide. –

+0

Ça va le faire - tout ce qui est vraiment nécessaire est le 'django.contrib.auth' sous INSTALLED_APPS dans votre fichier de paramètres. – heckj

Questions connexes