簡體   English   中英

帶有額外過濾器的Django queryset

[英]Django queryset with extra filter

我的models.py如下:

class Prescription(models.Model):
    date_prescribed = models.DateTimeField()
    doctor = models.ForeignKey(Doctor)  
    pharmacy = models.ForeignKey(Pharmacy)

class Doctor(models.Model):
    name = models.CharField(max_length=150)  
    age = models.PositiveSmallIntegerField()

class Pharmacy(models.Model):
    name = models.CharField(max_length=150)
    status = models.CharField()

現在我需要找到六個月內按月分組的所有處方,今天的月份是六個月的開始月份。

end_date = timezone.now()
start_date = end_date - relativedelta(months=6)    
qs = (Prescription.objects.extra(select={'month': connection.ops.date_trunc_sql('month', 'date_prescribed')})
                            .filter(date_prescribed__range=(start_date,end_date))
                            .annotate(Count('id'))
                            .order_by('month'))

但是,在視圖中使用時相同:

class PrescriptionTrendListView(generics.ListAPIView):
    queryset = Prescription.objects.all()
    serializer_class = LineGraphSerializer

    def get_queryset(self):
        end_date = timezone.now()
        start_date = end_date - relativedelta(months=6)
        truncate_date = connection.ops.date_trunc_sql('month', 'date_prescribed')
        qs = super(PrescriptionTrendListView,self).get_queryset.extra(select={'month': truncate_date})
        return qs.filter(date_prescribed__range=(start_date, end_date)).annotate(pk_count=Count('pk')).order_by('month')

我收到錯誤消息,指出“功能對象沒有額外的屬性” 我究竟做錯了什么 ?

您的超級函數調用有錯字(您沒有打電話)

qs = super(PrescriptionTrendListView,self).get_queryset().extra(select={'month': truncate_date})

暫無
暫無

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

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