【问题标题】:Django DateField QueryDjango 日期字段查询
【发布时间】:2012-09-10 17:39:20
【问题描述】:

我是 Django (1.4.1) 的新手,我有一个这样的模型:

class Expediente(models.Model):
    numero_expediente = models.IntegerField()
    ano_expediente = models.IntegerField()
    data_expediente = models.DateField(blank=False, null=False)
    urgencia = models.IntegerField()
    complexidade = models.IntegerField(null=True)
    numero_copia = models.IntegerField()
    posse = models.IntegerField()
    grupo = models.IntegerField(null=True)

我正在尝试使用日期范围进行查询:

now = datetime.now()
lista_expedientes = Expediente.objects.all().order_by('ano_expediente'

data_inicio = datetime.combine(now+timedelta(-30), now.timetz())
data_fim = datetime.combine(now, now.timetz())

exp_antiguidade[0] = lista_expedientes.filter(data_expediente__range=(data_inicio,  data_fim))

我试过用__gte__range和其他人查询,但最后我总是有错误:

异常类型:TypeError

异常值:需要整数

我认为我需要将日期时间转换为整数...

有什么办法吗?

提前致谢!

【问题讨论】:

  • 您在 ...order_by('ano_expediente'... 之后缺少右括号...这是一个错字吗?:)

标签: django datetime


【解决方案1】:

data_expediente 是一个DateField,所以它需要一个有效的Date 对象,但你给出的是一个Datetime 对象。您必须解决以下问题:

from datetime import datetime, timedelta

now = datetime.today().date() # get a Date object
data_inicio = now + timedelta(days=30)

【讨论】:

  • @Herrmann 你能更新问题并重新写下你的更正吗?
猜你喜欢
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 2010-10-18
  • 2016-07-09
  • 2017-11-15
  • 1970-01-01
相关资源
最近更新 更多