gpt4 book ai didi

python - 将字段从日期更改为日期时间

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:25 25 4
gpt4 key购买 nike

我需要将模型字段从 DateField 更改为 DateTimeField./manage.py makemigrations 生成的迁移仅将列类型从日期更改为日期时间,但它们不会迁移现有数据。

例如当我更改以下模型时

class Post(models.Model):
time = models.DateField()

class Post(models.Model):
time = models.DateTimeField()

时间列的值仍然是数据库中的日期(如 2016-12-21)。因此,对于每个帖子,post.time 都将为 None

相反,像 datetime.date(2016, 12, 21) 这样的每个对象都应该自动变成 datetime.datetime(2016, 12, 21, 0, 0)。解决此问题的最佳方法是什么?

最佳答案

您可以使用记录的数据迁移 here

您的迁移可能是:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from datetime import datetime

from django.db import migrations, models

def update_time(apps, schema_editor):
Post = apps.get_model("yourappname", "Post")
for post in Post.objects.all():
post.time = datetime.combine(post.time, datetime.min.time())
post.save()

class Migration(migrations.Migration):
initial = True

dependencies = [
('yourappname', '0001_initial'),
]

operations = [
migrations.RunPython(update_time),
]

关于python - 将字段从日期更改为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41264423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com