我正在尝试将字段与实际日期进行比较,但我仍然遇到此错误“'证书'对象不可订阅”
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错误
答案 0 :(得分:0)
您不能通过字典表示法访问模型字段;你使用点符号。您已经为c.certificate
这样做了;您需要对证书字段本身的属性执行相同操作,就像对c.in_house_responsibility.first_name
一样。
if c.certificate.date_certified ...