【问题标题】:Why is this not a valid entry for DateTimeField?为什么这不是 DateTimeField 的有效条目?
【发布时间】:2016-04-26 19:47:43
【问题描述】:

我正在尝试使用 django-import-export 导入 csv 文件,但出现了这个无意义的错误:

Line number: 44 - Column 'completion_date': Enter a valid date.
OrderedDict([(u'id', u''), ('language', 1868), ('type', 10), (u'language_code', u'fr'), ('completion_date', datetime.date(2015, 12, 31)), (u'document_slug', u'obs'), (u'is_online', u'1'), (u'completion_rate', u'50'), (u'is_done', u'0'), (u'completion_date_string', u'2015-12-31'), (u'in_door43', u'1'), (u'in_uw', u'1')])
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/import_export/resources.py", line 374, in import_data
self.import_obj(instance, row, real_dry_run)
File "/usr/local/lib/python2.7/dist-packages/import_export/resources.py", line 238, in import_obj
self.import_field(field, obj, data)
ValueError: Column 'completion_date': Enter a valid date.

这是我将completion_date定义为DateField的类:

python_2_unicode_compatible
class Progress(models.Model):

    language = models.ForeignKey('td.Language', limit_choices_to={'gateway_flag': True})
    type = models.ForeignKey('Document')
    is_online = models.NullBooleanField()
    method = models.CharField(max_length=200, choices=METHODS, blank=True)
    completion_rate = models.PositiveSmallIntegerField(choices=COMPLETION_RATE, null=True, blank=True)
    completion_date = models.DateField(null=True, blank=True)
    qa_level = models.PositiveSmallIntegerField(choices=QA_LEVEL, null=True, blank=True)
    in_door43 = models.NullBooleanField()
    in_uw = models.NullBooleanField()
    partners = models.ManyToManyField('Partner', blank=True)
    notes = models.TextField(blank=True)
    is_done = models.BooleanField(default="false")

    def __str__(self):
        return str(self.type)

    class Meta:
        unique_together = ("language", "type")

为什么datetime.date() 不是有效日期?

【问题讨论】:

    标签: django csv django-models django-admin django-import-export


    【解决方案1】:

    django 的DateField 似乎默认接受字符串。 尝试像这样转换您的日期时间字段:

    YourModel.completion_date = your_csv_dict['completion_date'].strftime("%Y-%d-%m")
    

    【讨论】:

      【解决方案2】:

      嗯,进口商似乎希望将日期作为字符串。当我不将字符串转换为datetime.date() 时,它可以工作。我的日期字符串采用yyyy-mm-dd 格式(由completion_date_string 列暗示)。

      【讨论】:

        猜你喜欢
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-17
        • 1970-01-01
        • 1970-01-01
        • 2010-11-06
        • 2023-01-13
        相关资源
        最近更新 更多