我有一个简单的模型:
class Pv(models.Model):
accounts =(
('Sub CF','Sub CF'),
('Special','Special'),
('Directors','Directors'),
('Operations','Operations'),
('LSGDP','LSGDP'),
('DWAP','DWAP'),
('Capacity(USD)','Capacity(USD)')
)
acc =(
('Yes','Yes'),
('No', 'No')
)
source =(
('GOG','GOG'),
('Others', 'Others')
)
pv =(
('General','General'),
('Honorarium','Honorarium')
)
center=(
('Cost Center 1','Cost Center 1'),
('Cost Center 2','Cost Center 2'),
('Cost Center 3','Cost Center 3'),
('Cost Center 4','Cost Center 4'),
('Cost Center 5','Cost Center 5')
)
stat =(
('Completed','Completed'),
('Returned','Returned'),
('Cancelled','Cancelled')
)
IA_System_Code = models.AutoField(primary_key = True)
IA_code = models.CharField(max_length = 150)
Date_recieved = models.DateField()
Pv_reference = models.CharField(unique = True, max_length = 120)
Source_of_Funding = models.CharField(max_length=50, choices = source)
Cost_center = models.CharField(max_length=50, choices = center)
Payee = models.CharField(max_length=500)
Description = models.CharField(max_length = 500)
Account_code = models.CharField(max_length=350)
Gross_amount = models.DecimalField(max_digits=19, decimal_places=2)
Withholding_tax = models.DecimalField(max_digits=19, decimal_places=2)
Net_amount = models.DecimalField(max_digits=19, decimal_places=2)
Status = models.CharField(max_length = 60, choices = stat )
Remarks =models.CharField(max_length = 500, blank = True)
Acc_Impress = models.CharField(max_length = 350,choices=acc)
Date_returned =models.DateField(null=True,blank = True)
Type_of_accounts= models.CharField(max_length = 100, choices = accounts)
Type_of_pv = models.CharField(max_length = 20, choices = pv)
returned_to_chest = models.DecimalField(max_digits=19, decimal_places=2)
created = models.DateTimeField(null=True)
created_by = models.ForeignKey('auth.User', blank=True,\
null=True,\default=None,\
on_delete=models.CASCADE,\
related_name='create')
modified = models.DateTimeField(null=True)
modified_by = models.ForeignKey('auth.User', blank=True,\
null=True,default=None\
,on_delete=models.CASCADE,\
related_name='modified')
class Meta():
ordering = ["IA_System_Code"]
def __str__(self):
return self.Description
def save(self, *args, **kwargs):
user = get_current_user()
if user and not user.pk:
user = None
if not self.pk:
self.created_by = user
self.created = datetime.now()
else:
self.modified_by = user
self.modified = datetime.now()
super(Pv, self).save(*args, **kwargs)
我正在努力弄清楚,我认为应该是一个简单的查询,使用 Django 的 ORM。
假设我总共有 3 个唯一用户创建的 6 个 PV 现在,我真正想要的是查询所有 pv 并计算每个用户创建的 pv,但只想要每个唯一用户中的一个并添加一个(我认为应该是一个带注释的)属性,称为每个用户的总计。
因此,如果用户创建了 2 个 PV,他的总数将为 2。请任何人帮助我。
这是我的查询
object_list = User.objects.filter(~Q(create = None))\
.annotate(total=('create__IA_System_Code').count()))`
以及如何在我的模板上显示它。请任何人都可以帮助我。看起来我不知道在做什么。感谢你