2011-08-22 88 views
0

我正在设置一个简单的计费系统,我有一个列出用户的表格和他们应该记帐的那一天。每个用户只有一行与此表关联。通过相关对象值查询

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

的模型是:

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

我将如何查询对日场? User.objects.filter(billingday=1)着眼于ID,但我正在寻找我需要billingday

回答

4
User.objects.filter(billingday__day=1) 

让用户的列表,1为day价值就像一个音符,不过,你可能要重新考虑如何”重新设置这个之前,你的兔子洞太深了。用户是否有多个帐单日期?我的猜测是否定的。如果是这种情况,那么BillingDay模型没有理由。它只会增加复杂性和片段数据。结算日可能只是您用户资料中的一个字段。

现在,为用户创建用户配置文件原则上没有什么区别,即使用BillingDay模型作为向User添加额外数据的方式,但它的可扩展性要高得多。 Django具有内置的方法,可以让用户配置文件与每个User相关联,并且随着时间的推移,您可以将更多数据传输到同一个用户配置文件对象。而BillingDay将被降级为只有一个数据点,而您稍后必须为其他数据点添加其他模型(更复杂且数据碎片)。

请参阅Django's documentation on user profiles