2012-11-09 93 views
0

我有一个地方的模型和评级模型:Django的外键

class Descriptions(models.Model): 
    name=models.CharField(max_length=50) 
    website=models.CharField(max_length=50,blank=True) 
    street1=models.CharField(max_length=50,blank=True) 
    street2=models.CharField(max_length=50,blank=True) 
    city=models.CharField(max_length=50,blank=True) 
    state=models.CharField(max_length=50,blank=True) 
    zip=models.CharField(max_length=5,blank=True) 
    description=models.TextField() 
    areas_related=models.TextField() 
    add_area=models.CharField(max_length=50,blank=True) 
    federal=models.NullBooleanField(null=True) 
    lat=models.TextField(blank=True) 
    long=models.TextField(blank=True) 
    creator=models.ForeignKey(User) 

    def __unicode__(self): 
    return u'%s %s %s %s %s %s %s %s %s %s %s %s %s' %(self.name,self.website,self.street1, 
    self.street2,self.city,self.state,self.zip,self.description,self.add_area, self.federal, self.lat, self.long, self.creator) 

的地方。然后,我有:

class Rating(models.Model): 
    user=models.ForeignKey(User) 
    rating=models.IntegerField(blank=True) 
    place=models.ForeignKey(Descriptions) 

    def __unicode__(self): 
     return u'%s %s' %(self.rating, self.place) 

在我的看法我用注释来获得评分的平均值:

relevant=Descriptions.objects.annotate(Avg('rating__rating')) 

现在,我可以添加到这个查询集,这样我也能访问哪些用户给了一个评价?或者我必须创建一个单独的查询集?任何帮助,将不胜感激。

回答

2

那么您可以随时访问给予评分的用户。

例,

for desc in Descriptions.objects.annotate(Avg('rating__rating')): 
    for rating in desc.rating_set.all(): 
      print rating.user 
+0

这就是我一直在寻找!谢谢。 – sam

+0

好极了......所有的btest –