- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个模型,其中包含 created_at
字段,该字段是 models.DateTimeField
。我想将其迁移到 models.DateField,因为不再需要时间。我更改模式,运行 makemigrations,并将其应用到我的数据库。我愚蠢地认为数据会被迁移。不,因为所有 created_at
字段现在都是 None
。
如何转换现有数据以使日期仍然可用?
这是生成的迁移文件:
# -*- coding: utf-8 -*-
# Generated by Django 1.10.5 on 2017-03-01 15:07
from __future__ import unicode_literals
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('aion', '0003_auto_20160125_0948'),
]
operations = [
migrations.AlterField(
model_name='assembly',
name='created_at',
field=models.DateField(default=datetime.date.today, verbose_name='date created'),
),
]
该数据库是在 SQLite 上运行的测试数据库。真正的运行在 MySQL 上...
$ python manage.py sqlmigrate aion 0004_auto_20170301_1507
BEGIN;
--
-- Alter field created_at on assembly
--
ALTER TABLE "aion_assembly" RENAME TO "aion_assembly__old";
CREATE TABLE "aion_assembly" ("created_at" date NOT NULL, "description" text NOT NULL, "serial_number" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "status" varchar(32) NOT NULL, "manufacturer_serial_number" varchar(128) NULL, "supplier_reference" varchar(128) NULL, "sap" varchar(128) NULL, "location_number_field" varchar(128) NULL, "customer_equipment_reference" varchar(128) NULL, "configurator_id" integer NULL REFERENCES "aion_configurator" ("id"), "created_by_id" integer NOT NULL REFERENCES "auth_user" ("id"), "customer_id" integer NULL REFERENCES "organisations_customer" ("id"), "locality_id" integer NULL REFERENCES "aion_location" ("id"), "project_code_id" integer NULL REFERENCES "project_codes_projectcode" ("id"), "supplier_id" integer NULL REFERENCES "organisations_supplier" ("id"), "contained_in_id" integer NULL REFERENCES "aion_assembly" ("serial_number"));
INSERT INTO "aion_assembly" ("status", "customer_equipment_reference", "manufacturer_serial_number", "description", "supplier_reference", "created_at", "created_by_id", "project_code_id", "contained_in_id", "locality_id", "supplier_id", "location_number_field", "customer_id", "serial_number", "configurator_id", "sap") SELECT "status", "customer_equipment_reference", "manufacturer_serial_number", "description", "supplier_reference", "created_at", "created_by_id", "project_code_id", "contained_in_id", "locality_id", "supplier_id", "location_number_field", "customer_id", "serial_number", "configurator_id", "sap" FROM "aion_assembly__old";
DROP TABLE "aion_assembly__old";
CREATE INDEX "aion_assembly_cc6edc4a" ON "aion_assembly" ("configurator_id");
CREATE INDEX "aion_assembly_e93cb7eb" ON "aion_assembly" ("created_by_id");
CREATE INDEX "aion_assembly_cb24373b" ON "aion_assembly" ("customer_id");
CREATE INDEX "aion_assembly_7e3ea948" ON "aion_assembly" ("locality_id");
CREATE INDEX "aion_assembly_f56bb38b" ON "aion_assembly" ("project_code_id");
CREATE INDEX "aion_assembly_c5bcd634" ON "aion_assembly" ("supplier_id");
CREATE INDEX "aion_assembly_e71ddfe4" ON "aion_assembly" ("contained_in_id");
COMMIT;
最佳答案
SQLite 很神奇,但它的行为方式并不总是与其他数据库相同。关于 SQLite 的可能相关事实包括:
正如您所见,在使用 SQLite 时,Django 实际上会创建一个新表,并在修改列时从旧表复制数据。
我不太确定 SQLite 在您的情况下会在哪里出现问题,但由于您在生产中使用 MySQL,所以我建议在开发中也使用 MySQL。我们已经看到此迁移在 MySQL 下按预期工作。
关于python - 从 DateTimeField 迁移到 DateField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42534875/
我认为这里可能缺少一些非常简单的东西,但我找不到它。 我的 django 项目中有一个自定义管理命令,它应该迭代 Record 模型的实例并将它们写入 xlsx 文件。 我正在使用 xlsxwrite
在 Django 中:我有一个日期和时间需要输入到我的数据库模型中,其中有一列 models.DateTimeField() .似乎无论我做什么,我都会收到 ValidationError: ente
我正在尝试从 postgreSQL 数据库中查询过去一小时的数据, 这是 Django 中的表模型: class data(models.Model): fecha = models.Text
你好,我有一个这样的模型: from datetime import datetime class Project(models.Model): created = models.DateTi
嗨,我的 Django 模型之一具有以下字段 created_at = models.DateTimeField(blank=True,null=True) 但是,当我检查数据类型时,它显示为 Str
我有一个博客,我发表了很多文章。每篇文章都有一个发表日期,有时我不得不编辑这个日期。一切都在 Django 管理面板上运行,自从我决定在我的 admin.py 中添加 DateTimeField 以来
我的模型中有一个 DateTime 字段,我正在寻找一种简单的方法来使其在表单中看起来不错。类似于SelectDateWidget。 我一直在研究很多类似的问题,并且让像 admin datepick
我有一个表示事件开始时间的字段,我为此使用 Django DateTimeField。此字段是强制性的,但有时用户只知道开始日期而不知道时间。无论如何,是否可以将时间部分设为可选并保留日期部分为强制?
以下模型的日期字段需要一个默认值: from django.utils import timezone as django_tz import psycopg2 class AvailabilityR
我有一个 DateTimeField,用户必须在其中手动输入日期和时间(YYYY-MM-DD Hour:Minute am/pm)。我希望能够使用 Django 日历输入让用户选择一个日期,而不必输入
我创建了一个要测试的事务表,该表最重要的字段之一是: models.DateTimeField( default=timezone.now) 为了使用数据库测试我的应用程序,我
正在显示当前日期,但它显示在文本框中。我如何获得日期选择器??? models.py class Comment(models.Model): title = models.CharField
我有一个带有 DateTimeField 的模型: deadline = models.DateTimeField(verbose_name="Valid unitl", null=True, bla
我的“日期”字段怎么没有出现在管理系统中? 在我的 admin.py 文件中 from django.contrib import admin from glasses.players.models
我有带有 DateTimeField 列的模型。 我正在尝试通过 sql 查询将具有数据库 current_time 值的行直接插入到表中。 我对 MySQL 数据库的 sql 查询如下: INSER
前言 今天在项目中遇到一个Django的大坑,一个很简单的分页问题,造成了数据重复。最后排查发现是DateTimeField 属性引起的。 下面描述下问题,下面是我需要用到的一个 Task Mo
我有模型 class Item(models.Model): inicio = models.DateTimeField() 当我尝试进行此查询时: itens = Item.objects.
当我将带有时区信息的时间例如:2013-02-27T14:00:00-05:00 发布到 Django 日期时间字段时,会抛出一个表单错误“输入有效的日期/时间。”。 我的表单域定义如下 time
我正在使用 Django 2.2 在我的应用程序中,时区支持由 启用USE_TZ=真在设置文件中。 我有带 的模型日期时间 领域created . 我需要根据日期过滤数据。日期可以由用户提供,否则默认
我刚刚注意到 model_to_dict 的一个错误,它跳过模型中的所有 DateTimeField 并且从不将它们转换为字典,而使用 QuerySet 的 values() 函数则没有。我在互联网上
我是一名优秀的程序员,十分优秀!