将数据库字段与日期

时间:2017-11-06 11:29:39

标签: python django postgresql psql

我正在尝试将字段与实际日期进行比较,但我仍然遇到此错误“'证书'对象不可订阅”

if datetime.datetime.strptime(c.certificate['date_certified'], '%Y-%m-%d').date() >= datetime.date('2016-01-01'):

有谁能告诉我哪里出错了,可能的解决方案呢?

组件和证书模型的定义

class Component(models.Model):
certificate = models.ForeignKey(
    Certificate,
    blank=True,
    null=True,
    on_delete=models.SET_NULL,
    verbose_name=_('Certificate'),
    help_text=_('Certificates are named after its first assigned component.'))


class Certificate(models.Model):
date_certified = models.DateField(
    null=True, verbose_name=_('Date certified'))

错误讯息:

if datetime.datetime.strptime(c.certificate.date_certified, '%Y-%m-%d').date() >= datetime.date('2016-01-01'):

TypeError:strptime()参数1必须是str,而不是datetime.date

field_date = (str(c.certificate.date_certified))
        if datetime.datetime.strptime(field_date, '%Y-%m-%d').date() >= datetime.date('2016-01-01'):

TypeError:需要一个整数(得到str类型)

我尝试了一些方法,但继续得到str,int错误

1 个答案:

答案 0 :(得分:0)

您不能通过字典表示法访问模型字段;你使用点符号。您已经为c.certificate这样做了;您需要对证书字段本身的属性执行相同操作,就像对c.in_house_responsibility.first_name一样。

if c.certificate.date_certified ...