将数据库字段与日期进行比较
Comparing a database field with date
我正在尝试将一个字段与实际日期进行比较,但我遇到了这个错误“'Certificate' 对象不可订阅”
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'):
类型错误:需要一个整数(得到类型 str)
我尝试了一些方法,但不断收到 str、int 错误
您不通过字典符号访问模型字段;你使用点符号。您已经为 c.certificate
这样做了;您需要对证书字段本身的属性执行相同的操作,就像对 c.in_house_responsibility.first_name
.
所做的一样
if c.certificate.date_certified ...
我正在尝试将一个字段与实际日期进行比较,但我遇到了这个错误“'Certificate' 对象不可订阅”
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'):
类型错误:需要一个整数(得到类型 str)
我尝试了一些方法,但不断收到 str、int 错误
您不通过字典符号访问模型字段;你使用点符号。您已经为 c.certificate
这样做了;您需要对证书字段本身的属性执行相同的操作,就像对 c.in_house_responsibility.first_name
.
if c.certificate.date_certified ...