【问题标题】:How to update a DateField in Django from a json object如何从 json 对象更新 Django 中的 DateField
【发布时间】:2016-02-03 03:28:31
【问题描述】:

我想在我的数据库中重新填充一个 DateField ..例如对于这个 "EXPIRYDATE": "2016-Sep-02", json 值,我在我的数据库中得到 Feb. 2, 2016

expirydate = models.DateField(auto_now=True, blank=True, null=True)

这将尝试遍历列表中的两个对象,一个是法语,一个是英语,所以我会尝试更新 expirydate 字段,但它不是正确的值。

for lang in [0,1]:
    jobs_lang = data[lang]['jobs']
    for job in jobs_lang:
        emploi= Job.objects.filter(jobref=job['JOBREF'])
        if (emploi[0].expirydate != job['EXPIRYDATE']):
            emploi[0].expirydate = job['EXPIRYDATE']
            emploi[0].save()

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    如果你知道日期格式会是一致的,你可以使用datetime模块的strptime函数来解析日期字符串:

    import datetime
    
    # the date_format should match what's provided in the JSON
    date_format = '%Y-%b-%d' 
    emploi[0].expirydate = datetime.datetime.strptime(job['EXPIRYDATE'], date_format)
    

    这里,date_obj 将是您通过 Django ORM 保存到数据库中的对象。

    另请参阅https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior 了解备用格式字符串。

    【讨论】:

    • 谢谢@Derek,但我从opendata 获取我的数据,但是当我应用你的答案时,它总是给我2016-02-02`` so today's date. But when I tryied it for 'POSTDATE 它给了我正确的答案。
    • 谢谢!谢谢!寻求帮助。你的简化版本让我意识到代码是多么美丽:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2017-12-21
    相关资源
    最近更新 更多