将数据库字段与日期进行比较

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 ...