2013-10-29 78 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