如何与django比较日期

Tec*_*ech 2 python django datetime

我有一个Post模型,它具有vip会员结束时间.我想算一下活跃的会员资格.

我的模特:

class Post(models.Model):
    title = models.CharField(max_length=250,verbose_name ='Ba?l?k')
    image =  models.ImageField(upload_to=upload_location, null=True, blank=True,verbose_name ='Vitrin Foto?raf?')
    vip = models.BooleanField(default=False,verbose_name ='Vip')
    phone = models.CharField(max_length=11,verbose_name ='Telefon')
    vipend = models.DateTimeField(auto_now=False,auto_now_add=False,null=True,blank=True,verbose_name ='Vip Biti?')
Run Code Online (Sandbox Code Playgroud)

我的看法:

def yonetim(request):

endvipcount = Post.objects.fiter(vip=True,vipend<datetime.now()).count() # This part is obviously wrong # 

context = {
    "endvipcount": endvipcount ,

    }
 return render(request, "yonetici.html", context)
Run Code Online (Sandbox Code Playgroud)

错误:

endvipcount = Post.objects.fiter(vip=True, vipend < datetime.now()).count()
                                                       ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我想要主动和被动的vip成员计数.这样做的理想方式是什么?

Nav*_*pak 8

对于使用该WHERE子句的SQL查询,您应该使用Django字段查找(请参阅doc链接)

你可以使用__lt:

Post.objects.fiter(vip=True, vipend__lt=datetime.now()).count()
Run Code Online (Sandbox Code Playgroud)

这意味着任何Post对象,其中vip字段为true且vipend字段小于now().

__date__lt如果要忽略字段的时间组件,也可以使用.

Django doc:lt
Django doc:date