django相关经理 - 在模板中

时间:2013-04-05 03:20:27

标签: python database django django-related-manager

我想显示一个位置的最新评分。我有2张桌子(django型号)

Class Location(models.Model):
   locationname = models.CharField()
   ...

Class Rating(models.Model):
   von_location = models.ForeignKey(Location,related_name="locations_rate")
   rating = models.IntegerField()

现在在我的数据库中,一个位置(id = 1)有3个等级(1,2,4)。

我想显示某个地点的最新评分记录。我能以某种方式使用相关管理器在模板中执行此操作吗

我的愿景是:

all_locs = Location.objects.all()

然后在模板中:

{% for location in all_locs %}
   {{ location.locations_rate.latest }}
{% endfor %}

相关经理可以做这种事情吗?

1 个答案:

答案 0 :(得分:5)

我在你的其他相关问题中的答案:

models.py

class Location(models.Model):
    locationname = models.CharField(max_length=100)

    def __unicode__(self):
        return self.locationname

    def latest(self):
        return Rating.objects.values('rating').filter(von_location=self).order_by('-id')[0]

class Rating(models.Model):
   von_location = models.ForeignKey(Location,related_name="locations_rate")
   rating = models.IntegerField()

   def __unicode__(self):
        return "{0}".format(self.rating)

views.py

all_locs = Location.objects.all()

模板

{% for location in all_locs %}
   {{ location.locationname }} - {{ location.latest.rating }}<br/>
{% endfor %}