2013-10-29 79 views
0

我想弄清楚如何在模板中從下面的擴展用戶模型顯示userRating字段,但沒有任何顯示。如何從Django中的擴展用戶訪問字段?

型號:

class userProfile(models.Model): 
    user = models.OneToOneField(User) 
    USER_RATING_CHOICES = (("1 star", "1 Star(s)"), ("2 star", "2 Star(s)"), ("3 star", "3 Star(s)"), ("4 star", "4 Star(s)"), ("5 star", "5 Star(s)"))   
    userRating = models.CharField("User rating", max_length=6, choices=USER_RATING_CHOICES, default="1 star") 

class partListing(models.Model): 
    partName = models.CharField("Name", max_length=200) 
    datePublished = models.DateTimeField("Date published") 
    postedBy = models.ForeignKey(User) 
    def __unicode__(self): 
     return self.partName 

查看:

def browse(request): 
    partListingTitle = partListing.objects.filter(partName__startswith='2010') 
    # Note: the startswith query here is just for testing 
    return render_to_response("partmanager/browse.html", 
          {'partListingTitle' : partListingTitle}, 
          context_instance=RequestContext(request)) 

我想要做的就是在我的模板像User rating: 3 stars。我設法讓postingBy字段正常工作,但我無法獲得userRating來顯示評分。

+0

您已經發布了一切,但你的問題的根本點 - 什麼是模板? –

回答

0

您可以這樣做:將related_name屬性添加到OneToOneField,然後使用.訪問器對其進行反向訪問。

class userProfile(models.Model): 
    user = models.OneToOneField(User, related_name='profile') 
    USER_RATING_CHOICES = (("1 star", "1 Star(s)"), ("2 star", "2 Star(s)"), ("3 star", "3 Star(s)"), ("4 star", "4 Star(s)"), ("5 star", "5 Star(s)"))   
    userRating = models.CharField("User rating", max_length=6, choices=USER_RATING_CHOICES, default="1 star") 

然後,

{% for listing in partListingTitle %} 
    {{listing.postedBy.profile.userRating}} 
{% endfor %} 
+0

謝謝,這正是我所需要的。 – CupOfTea