0

我有大约 5 个带有用户外键的表,即:

class Passport(models.Model):
    user = models.OneToOneField(User)
    ...

此外,像 UserProfile、Company、UserOptions、NotifySettings 等类。我需要获取带有用户摘要页面连接值的 dict。我还需要加入这个联盟这个汇总统计:

rent_sums = WriteOff.objects.filter(created_at__range=(rent_start, rent_finish), write_off_type='rent').values('user').\
                annotate(rent_amount=Sum('amount')).order_by()

如果不手动更新结果字典,我怎么能做到这一点?

4

1 回答 1

1

您可以通过从 django 执行自定义 SQL来做到这一点,但我在这里看到的主要问题是模型的处理方式,如果您将所有这些用户外键混合到 UserProfile 中会容易得多,例如:

class UserProfile(models.Model):
    user = fields.OneToOneField(User)
    company = fields.ForeignKey(Company)
    options = fields.ForeignKey(Options)
    notification_settings = fields.ForeignKey(NotifySettings)
    ...

这样你就可以更轻松地使用 django 带来的 ORM。在我看来,创建迁移而不是这个庞大的查询会更快。

于 2012-08-08T20:44:05.497 回答