【发布时间】:2020-05-23 02:32:58
【问题描述】:
def read_rate(self, id):
cursor = self.db.cursor()
cursor.execute('SELECT volume FROM rate WHERE cur_id = ' + str(id) + ' ORDER BY id DESC LIMIT 10')
volume = cursor.fetchall()
cursor.execute('SELECT rate FROM rate WHERE cur_id = ' + str(id) + 'ORDER BY id DESC LIMIT 1')
(get,) = cursor.fetchone()
rate = str(get)
average = str(sum([float(x[0]) for x in volume])/len(volume))
cursor.close()
return {'rate': rate, 'average_volume': average}
需要在DRF ORM上实现代码,其中queryset会返回'cur id'、'last rate'和'average volume in the last 10 days'
型号
class Rate(models.Model):
cur = models.ForeignKey(Cur, on_delete=models.CASCADE)
date = models.DateField(auto_now=True)
rate = models.FloatField()
volume = models.FloatField()
def __str__(self):
return self.cur
class Meta:
ordering = ['-id']
以及我如何尝试实施
class RateView(ListAPIView):
serializer_class = RateSerializer
def get_queryset(self):
return Rate.objects.values(
cur__id__in=[self.kwargs['id']]).order_by(
'-id')[:10].annotate(Avg('volume'), 'rate', self.kwargs['id'])
【问题讨论】:
-
嗨,迈克,您能否为“Rate”模型发布您的
models.py文件……或者这不是在您的应用程序中建模的(即,您是否连接到外部数据库源?) -
忽略我,你有!
标签: python django orm django-rest-framework django-orm