2016-12-16 7 views
1

年齢が1日以上のモデルから動画を削除したいと思います。シェルでdjangoでDateTimeFieldが定義されていません

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) 

、私は年齢以下のように一日以上ある動画を削除するクエリを実行します。

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) 
関連する問題