我有一个模型,我试图通过最高评级平均顺序,但它似乎没有做正确的排序。
在我的www.example.com中views.py我有:
restaurants = Restaurant.objects.all().order_by('-rating__rating_average')
我的模型定义将字段定义为:
rating_average = models.FloatField()
然而,这个查询似乎返回了一个随机排序。我忽略了什么吗?这个查询是如何用FloatField完成的?
下面是我的models.py文件和相关模型:
class Rating(models.Model):
restaurant = models.OneToOneField('restaurant.Restaurant', primary_key=True)
one_star_total= models.IntegerField()
two_star_total= models.IntegerField()
three_star_total= models.IntegerField()
four_star_total= models.IntegerField()
five_star_total= models.IntegerField()
number_of_ratings = models.IntegerField()
total_rating_value = models.IntegerField()
rating_average = models.FloatField()
def __str__(self): # __unicode__ on Python 2
return self.restaurant.restaurant_name
class Restaurant(models.Model):
user = models.OneToOneField(User)
restaurant_name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
address2= models.CharField(max_length=100, default= "null", blank=True,null=True)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zipcode = models.IntegerField()
phone = models.CharField(max_length=15)
website_link= models.CharField(max_length=200, blank=True, null=True)
category= models.CharField(max_length=100)
pub_date = models.DateTimeField(default=timezone.now,blank=True)
def __str__(self): # __unicode__ on Python 2
return self.restaurant_name
1条答案
按热度按时间xytpbqjk1#
也许是因为空值的原因,但正因为如此,它对我不起作用。
我使用Django的F函数来解决这个问题,在count中有null值,如下所示:
Django的文档-链接。