2016-07-01 2 views
0

Mit dem django Auth Benutzermodell und mein Profil Modell wie folgt aus:Kann Daten nicht von einer zu einer Beziehung anzuzeigen, machen nur von einem Modell

// models.py 
from django.db import models 
from django.contrib.auth.models import User 

class PROFILE(models.Model): 
    userID = models.OneToOneField(
     User, 
     on_delete=models.CASCADE, 
     primary_key=True 
    ) 
    idCity_FK = models.ForeignKey(CITY) 

Und meine Ansicht, welche die Informationen über die aktuelle angezeigt werden Benutzer:

//views.py 
class ViewProfile_vw(DetailView): 
    template_name = 'profile.html' 

    def get_object(self): 
     currentUser = self.request.user 
     return get_object_or_404(PROFILE, userID=currentUser.id) 

Und meine hTML-Datei Felder aus beiden Modellen zu machen:

//profile.html 
<h1>Hello {{ object.email }}</h1> 
<p>City:{{ object.idCity_FK }}</p> 

Mein Browser zeigt nur den Namen der Stadt an, aber zeigt die E-Mail nicht an. Der Benutzer hat eine E-Mail und die ID ist die gleiche in den "eins zu eins" -Feldern.

Wie kann ich die Daten aus dem Benutzermodell anzeigen?

+1

Haben Sie '{{object.userID.email}}'? –

Antwort

1

Das ist, weil Sie kein E-Mail-Feld haben. Wenn Sie Djangos Auth verwenden, dann hat die Django User Klasse eine E-Mail, so dass Sie über object.userID.email darauf zugreifen können.

Hinweis, einschließlich ID in Ihrem Feldnamen ist keine sehr gute Idee, da es keine ID ist, ist es eine Objektbeziehung.

+1

Es funktioniert perfekt! Eigentlich habe ich die "id" nicht in den Namen aufgenommen, es ist nur ein Beispiel für meinen Code, und ich habe versucht, mich selbst am besten zu erklären. Aber Ihre Bemerkung über eine Objektbeziehung lässt mich besser verstehen. – QUHO

Verwandte Themen