I use django restframwork
这是链接到127.0.0.1/movie/?top=1
时 views.py 的函数
我想查询仍在影院上映的电影和 1 个月内的上映日期但有时结果会重复,
请帮我检查我的查询为什么会发生这种情况?
def top(self):
past_month.date() = '2014-12-20'
today.date() = '2015-01-20'
self.queryset = Movie.objects.filter(releaseday__gte=past_month.date(),releaseday__lte=today.date(),movie__showtime__gte=today).extra({'vrank': 'CASE WHEN hot=0 THEN 21 WHEN hot >=10 THEN 21 ELSE hot END'}).order_by('vrank','-releaseday').distinct()
这是我的模型:
class Movie(models.Model):
title = models.CharField(max_length=255, blank=True)
releaseday = models.DateField( null=True,blank=True)
class MovieShowtime(models.Model):
movie = models.ForeignKey( Movie, null=True,blank=True,related_name = 'movie' )
movietime = models.DateTimeField(null=True,blank=True)
可能是您的查询返回不同的行,但某些行之间的差异仅在您不打算查看的列中(例如,相关表中的字段)。
若要确保查询为关注的列返回不同的值,请在 distinct() 之前使用 .values(['col1', 'col2' ...])。
另外,请务必在此处的文档中看到有关对未包含在 values() 中的列进行排序的说明: https://docs.djangoproject.com/en/1.7/ref/models/querysets/#distinct