Django模型选择字段默认值不起作用

时间:2017-10-30 16:08:00

标签: python django django-models

我正在开发一个基本的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,”字段'状态'没有默认值值 “)”。我搜索了整个论坛,但找不到任何类似的问题,请帮忙。

1 个答案:

答案 0 :(得分:0)

模型中添加的默认值不会反映在生成的SQL DDL语句中。这种方式最有可能,因为没有什么能阻止人们使用callables作为默认值,运行复杂的代码来计算默认值。显然无法将可调用的内容替换为DB。

最好直接使用ORM。如果您希望使用独立python脚本中的Django ORM与DB通信,您可以初始化脚本并调用import django; django.setup(),这几乎可以确保您可以导入模型并通过ORM运行查询。

注意:您可能必须导出DJANGO_SETTINGS_MODULE env变量才能使其生效。