我有一个正在使用的Django模型,如下所示:
class FinancialAid(models.Model):
RECEIVED_EVERY = (("J","Jours"),("S","Semaines"),("M","Mois"))
ID = models.AutoField(primary_key=True)
Name = models.CharField(max_length=100,null=True,blank=True)
Value = models.IntegerField(null=True,blank=True,default=-1)
ReceivedEvery = models.CharField(max_length=15,choices=RECEIVED_EVERY)
Exchange = models.ForeignKey('Exchange',on_delete=models.CASCADE)
我能够访问所需的信息,但是存在一个问题,我的QuerySet中经常在Name
和ReceivedEvery
列上有重复项,但并不总是在Value
上永远不要在Exchange
上。
说我扩展了以下QuerySet:
financial_aid_qs = [
(ID=1,Name="Aid1",Value=100,ReceivedEvery="M",Exchange=Exchange.objects.get(pk=1)),(ID=2,Name="Aid2",Value=200,ReceivedEvery="S",Exchange=Exchange.objects.get(pk=2)),(ID=3,Value=150,Exchange=Exchange.objects.get(pk=3)),(ID=4,Name="Aid3",Exchange=Exchange.objects.get(pk=4))
]
如您所见,索引1和3具有相同的Name
和ReceivedEvery
。我想做的是获取QuerySet(或ValuesQuerySet,尽管我似乎记得已删除了它) ),将包含所有Name
不同的FinancialAid对象,并对Value
相同的FinancialAid对象的Name
进行平均。理想情况下,应考虑到ReceivedEvery
相同的情况下Name
可以有所不同的事实(这只是一个平均值,因此不需要是完美的,因此,一个月是30天或4周)。
有了这些,结果应该看起来像这样:
financial_aid_qs = [
(Name="Aid1",Value=125,ReceivedEvery="M"),(Name="Aid2",ReceivedEvery="S"),(Name="Aid3",ReceivedEvery="M")
]
如您所见,对于Aid1
,该值已从100和150取平均值到125,而其他Aid尚未修改。