【发布时间】:2018-04-18 13:24:10
【问题描述】:
我正在尝试将字段与实际日期进行比较,但遇到此错误“'Certificate' object is not subscriptable”
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 错误
【问题讨论】:
-
您必须提供更多详细信息,例如您的
models.py的某些部分。 -
什么是证书对象?字典、模型还是其他东西?提供证书对象的定义来回答这个问题。
-
def print_info_person_new_certified_component(): for c in Component.objects.all(): if c.certificate: if datetime.datetime.strptime(c.certificate['date_certified'], '%Y-%m-%d').date() >= datetime.date('2016-01-01'): print('First name: ' + c.in_house_responsibility.first_name) -
证书是在不同的models.py文件中定义的模型。如果该条件得到执行,我需要打印一些值
-
请显示组件和证书模型的定义。并且不要在 cmets 中编写代码;把它作为问题的更新。
标签: python django postgresql psql