簡體   English   中英

Django的distinct()和order_by()extra()一起使用

[英]django distinct() and order_by() extra() use together

我用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM