Django使用不同的ForeignKey ID&和所有值。用相关表格中的字段压缩它们

时间:2010-03-28 22:12:03

标签: python django postgresql django-models

我想执行与this类似的操作(即在付款表中获取不同事件金额的总和,然后按照事件详细信息和为其支付的总金额对付款进行分组。同时获取用户及其拥有的内容使用PostgreSQL在Django中支付一个事件。

我的模型如下:

class UserProfile(User):
    onames = models.CharField(max_length=30, blank=True)
    phoneNumber = models.CharField(max_length=15, blank=True)
    regNo = models.CharField(max_length=15)
    designation = models.CharField(max_length=3,choices=DESIGNATION_CHOICES, default='MEM')
    image = models.ImageField(max_length=100,upload_to='photos/%Y/%m/%d', blank=True, null=True, default='photos/2010/03/placeholder.jpg')
    course = models.CharField(max_length=30, blank=True, null=True)
    timezone = models.CharField(max_length=50, default='Africa/Nairobi')
    smsCom = models.BooleanField()
    mailCom = models.BooleanField()

class Payments(models.Model):
    username = models.ForeignKey(UserProfile, related_name='payer')
    receiptNo = models.CharField(max_length=30, primary_key=True)
    particulars = models.CharField(max_length=50)
    date = models.DateField(auto_now_add=True)
    amount = models.FloatField(max_length=99, blank=True)
    eventID = models.ForeignKey('events', null=True, blank=True)
    receiver = models.ForeignKey(UserProfile, related_name='receiver')
    deleted = models.BooleanField()

class events(models.Model):
    eventName  = models.CharField(max_length=100)
    eventID =  models.AutoField(primary_key=True)
    details = models.TextField()
    attendanceFee = models.FloatField(max_length=99)
    date = models.DateField()
    username = models.ManyToManyField(UserProfile, related_name='user')
    eventposter = models.ForeignKey(UserProfile, related_name='event_poster')
    deleted = models.BooleanField()

1 个答案:

答案 0 :(得分:0)

在一些神经破裂后,解决方案是将查询分成2个,即一个用于分组和求和,另一个用于获得匹配值。

有关分组和汇总,请参阅here