我正在开发一个基本的Django网站。
我在models.py文件中添加了一个名为“status”的Model字段,如下所示:
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'模型字段的默认值是无,它应该是'N'。 此外,当我尝试使用Python SQL脚本将 INSERT 记录到同一个数据库表中时,它会抛出一个错误:“警告:(1364,”字段'状态'没有默认值值 “)”。我搜索了整个论坛,但找不到任何类似的问题,请帮忙。
答案 0 :(得分:0)
模型中添加的默认值不会反映在生成的SQL DDL语句中。这种方式最有可能,因为没有什么能阻止人们使用callables作为默认值,运行复杂的代码来计算默认值。显然无法将可调用的内容替换为DB。
最好直接使用ORM。如果您希望使用独立python脚本中的Django ORM与DB通信,您可以初始化脚本并调用import django; django.setup()
,这几乎可以确保您可以导入模型并通过ORM运行查询。
注意:您可能必须导出DJANGO_SETTINGS_MODULE
env变量才能使其生效。