Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django distinct()和order_by()extra()一起使用_Python_Django - Fatal编程技术网

Python django distinct()和order_by()extra()一起使用

Python django distinct()和order_by()extra()一起使用,python,django,Python,Django,我使用django restframwork 当链接到127.0.0.1/movie/?top=1 我想查询电影仍然在影院和1个月内的发行日 但有时结果会重复, 请帮我检查我的问题,为什么会发生这种情况 def top(self): past_month.date() = '2014-12-20' today.date() = '2015-01-20' self.queryset = Movie.objects.filter(releaseday__gte=pa

我使用django restframwork

当链接到
127.0.0.1/movie/?top=1

我想查询电影仍然在影院和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()中的列进行排序的说明:

我使用valie会遇到此问题
“dict”对象没有属性“datetime”
,因为我在序列化中处理datetime。py@user2492364我不知道该怎么做,这听起来像是另一个问题。也许这是一个与代码和回溯不同的问题?谢谢你的帮助!我发现了为什么会这样。因为我需要将queryset传递给serialize.py来执行操作,所以我不能使用
值,它将成为dict。我仍然找到另一种方法来解决这个问题。