Django查询集。将所有行保存到变量并删除表中的行

时间:2016-04-29 08:40:15

标签: django django-models django-queryset

我使用mysql表作为我解析的数据的临时存储。我试图从表中获取数据,将其保存到变量中,从表中删除行并将模型的对象(保存到变量中)保存到模板中,但不成功。 QuerySet是懒惰的,但我想从表中获取数据,而不仅仅是指针。我怎么能这样做?

fop_rating = Edata.objects.values('recipt_name').filter(recipt_edrpou='xxxxxxxxxx').annotate(total=Sum('amount')).order_by('-total')[:10]

uric_rating = Edata.objects.values('recipt_name').exclude(recipt_edrpou='xxxxxxxxxx').annotate(total=Sum('amount')).order_by('-total')[:10]

rows = Edata.objects.filter(rand_ind=rand_ind)  
for r in rows: # delete all the rows
    r.delete()

return render(request,'edata/index.html',{"data":data,'fop_rating':fop_rating,'uric_rating':uric_rating})

1 个答案:

答案 0 :(得分:2)

您的代码需要稍作更改。

resp  = render(request,'edata/index.html',
  {"data":data,'fop_rating':fop_rating,'uric_rating':uric_rating})

Edata.objects.filter(rand_ind=rand_ind).delete()

return resp

请注意,您需要在删除行之前呈现响应。其次,您不需要逐行删除它(这将是相当低效的)。您可以按上述方式批量删除。