2016-12-16 49 views
1

定義的錯誤我想從我的模型,其年齡超過一天刪除該視頻。DateTimeField字段是不是在Django

models.py

from __future__ import unicode_literals 
import urllib 
from django.core.files import File 
from django.db import models 
from PIL import Image 
from datetime import datetime 
from django.utils import timezone 
import os 
class video(models.Model): 
    video_title = models.CharField(max_length=250) 
    video_link = models.CharField(max_length=250) 
    video_thumbnail = models.ImageField(upload_to = '',blank = True) 
    image_url = models.CharField(max_length=250,blank = True) 
    upload_date = models.DateTimeField(blank=True) 
    def cache(self): 
     if self.image_url and not self.video_thumbnail: 
      result = urllib.urlretrieve(self.image_url) 
      self.video_thumbnail.save(
        os.path.basename(self.image_url), 
        File(open(result[0])) 
        ) 
      self.save() 

    def __str__(self): 
     return self.video_title + "," + self.video_link + "," + str(self.upload_date) 

在shell下,我做一個查詢刪除其年齡超過一天的視頻如下:

video.objects.filter((datetime.datetime.now() - (upload_date)).total_hours > 24) 

但我得到以下錯誤:

In [6]: video.objects.filter((datetime.datetime.now() - (upload_date)).total_hours > 24) 
--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 
<ipython-input-6-0c1ffc162513> in <module>() 
----> 1 video.objects.filter((datetime.datetime.now() - (upload_date)).total_hours > 24) 

NameError: name 'upload_date' is not defined 

爲什麼我得到錯誤?

回答

1

該查詢倒退。您無法通過datetime.datetime.now()作爲第一個參數;這是爲了比較字段名稱。你需要讓你問其UPLOAD_DATE是所有影片扭轉查詢之前,現在零下24小時服務:

target_time = datetime.datetime.now() - datetime.timedelta(hours=24) 
video.objects.filter(upload_date__lte=target_time) 
相關問題