2017-10-05 4 views
0

Je crée un site web où chaque utilisateur a une instance Profile associée, parce que je veux que le Modèle utilisateur pour gérer uniquement les fonctions utilisateur liées à l'authentification et le modèle Profile pour gérer tout le reste (comme les images téléchargées par l'utilisateur, etc.) Le profil a un User OneToOneField. Cependant, je veux être en mesure d'accéder à la page de détails de chaque profil en utilisant le modèle d'URL site/profile/[nom d'utilisateur] /. Ceci est impossible sans stocker le nom d'utilisateur dans les modèles User et Profile, car slug_field pour Profile ViewView doit être une clé primaire de Profile, et le nom d'utilisateur est un champ User. Est-il possible de le faire sans stocker le nom d'utilisateur dans deux endroits différents?Django: J'ai un modèle Profile, et je veux que le slug pour la page de détails du profil soit un nom d'utilisateur, qui est stocké dans User model

Répondre

1

Ce n'est pas nécessaire. Vous pouvez essayer de cette façon.

Dans urls.py

from .import views 

url(r'^(?P<usernameslug>[-_\w]+)/detail/$',views.detailprofile) 

En supposant Modèle

class Profile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    . . . . 
    . . . . 

Dans les vues

def detailprofile(request,usernameslug): 
    profile=Profile.objects.get(user__username=usernameslug) 
+0

@ Vik78 Si la solution a fonctionné pour vous s'il vous plaît Votez et sélectionnez et si toujours un problème est là, faites-moi savoir par les commentaires ci-dessous. Merci pour toute la coopération –