【发布时间】:2017-10-30 16:08:00
【问题描述】:
我正在开发一个基本的 Django 站点。
我在 models.py 文件中添加了一个名为“status”的模型字段,如下所示:
from django.db import models
class Person(models.Model):
USED_STATUS = (
('Y', 'Used'),
('N', 'Not used'),
)
status = models.CharField(max_length=1, choices=USED_STATUS, default=USED_STATUS[1][0])
但是当我 phpmyadmin 进入数据库时,'status' 模型字段的默认值是 None,应该是 'N'。 此外,当我尝试使用 Python SQL 脚本将记录 INSERT 插入同一个数据库表时,它会引发错误:“Warning: (1364,”Field 'status' doesn't have a default值")"。我已经搜索了整个论坛,但找不到任何类似的问题,请帮助。
【问题讨论】:
-
您应用迁移了吗?
-
是的,我已多次应用迁移。即使我尝试删除状态字段,应用迁移,然后重新创建状态模型字段,然后再次应用迁移。
-
默认只有Django使用,it is not set in the database。如果使用 phpmyadmin 或不使用 ORM 的 Python 脚本,则不会使用默认值。
-
好的,谢谢,这解释了这种行为。有什么方法可以使用其他脚本插入值而不干扰 Django 的默认选项?我可以使用脚本插入值“N”吗?
-
大多数数据插入使用 django ORM 可能更可靠。如果直接操作数据库,最终可能会出现不一致的架构。
标签: python django django-models