将日期时间以不同的格式传递给Django中的models.DateTimeField?

Opt*_*mus 4 python django datetime django-models

我有一个看起来像这样的模型

class Post(models.Model):
    id = models.IntegerField(unique=True, primary_key=True)
    title = models.CharField(max_length=150, blank=True)
    created = models.DateTimeField(blank=True)
    ...
Run Code Online (Sandbox Code Playgroud)

我必须用大块数据填充数据库.我以平坦的json字符串形式获取数据(没有嵌套)所以我的工作很简单,即

mydict = json.loads(jsonstr)
mypost = Post(**mydict) 
mypost.save()
Run Code Online (Sandbox Code Playgroud)

只有一个问题是日期时间以"YYYY-MM-DDThh:mm:ss + zzzz"格式表示(例如 "created" : "2011-11-17T09:21:31+0000"),它打破了上述代码.

我知道forms.DateTimeFieldinput_formats.有没有办法让DateTimeField接受上面的格式?

Chr*_*sse 6

子类DateTimeField并适当地转换值:

class ConvertingDateTimeField(models.DateTimeField):

    def get_prep_value(self, value):
        return str(datetime.strptime(value, FORMAT_STRING))
Run Code Online (Sandbox Code Playgroud)

然后使用ConvertingDateTimeField替换models.DateTimeField.

如果你看看DateTimeField如何创建datetime对象,可能有更好的方法.