2015-06-15 29 views
1

如何在數據庫中添加日期?我的模型是:通過ORM添加日期到

class Item(models.Model): 
    days_due = models.IntegerField() 
    issue_date = models.DateTimeField() 

我有一個函數是這樣的:

def is_due(self): 
    time = self.days_due 
    days = timedelta(days=time) 
    due_date = self.issue_date + days 
    if timezone.now() >= due_date: 
     return True 
    else: 
     return False 

我希望能夠做類似is_due功能的東西上面有一個數據庫查詢,怎麼會變成這樣做? 我已經提到了文檔,並且看不到將F類與timedelta s合併的方法。

回答

0

可惜的是,你不能這樣做,以F表達式:https://code.djangoproject.com/ticket/16487

您可以使用.RAW()方法編寫自定義的SQL查詢,也可以使用標準的過濾器來得到這個工作,但前提是所有的車型具有相同的days_due值,這可能並非如此 - 但爲了以防萬一,你可以做這樣的:

Item.objects.filter(issue_date__lte=now - datetime.timedelta(days=days)) 
0

我認爲你不能在DB這樣做不可知論的方式。我會用extra(select)爲您的查詢添加is_due字段。喜歡的東西(未測試):

Item.objects.extra(select={'is_due': 'issue_date + days_due'}) 

可以在的Postgres數據庫工作。將extra select放在自定義管理器中以隔離數據庫特定的代碼。