查询相关对象值

时间:2011-08-22 21:35:19

标签: python django django-models django-queryset

我正在建立一个简单的结算系统,我有一个表格,列出用户和应该开帐单的日期。每个用户只有一行与此表相关联。

我需要每天查询数据库,以获取当天要结算的用户列表。

模型是:

class BillingDay(models.Model):
    user = models.ForeignKey(User)
    day = models.IntegerField(max_length=2)

我如何查询日期字段? User.objects.filter(billingday=1)查看了ID,但我希望我需要在day

中获取一个用户列表,其中包含billingday的值

1 个答案:

答案 0 :(得分:4)

User.objects.filter(billingday__day=1)

但是,作为一个注释,你可能想重新考虑如何在兔子洞太远之前设置它。用户会有多个结算日吗?我的猜测是否定的。如果是这种情况,则没有BillingDay模型的理由。它只会增加复杂性和片段数据。结算日可能只是您用户个人资料中的字段。

现在,为用户创建用户配置文件原则上与使用BillingDay模型作为向User添加额外数据的方式没有什么不同,但它更具可扩展性。 Django内置了一些方法,可以将用户配置文件与每个User关联起来,并且随着时间的推移,您可以向同一个用户配置文件对象提供更多数据。然而,BillingDay将被归为一个数据点,之后您必须为其他数据点添加其他模型(更复杂和数据碎片)。

请参阅Django's documentation on user profiles