繁体   English   中英

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

[英]Django model choice field default value not working

我正在一个基本的Django网站上工作。

我在models.py文件中添加了一个名为“状态”的“模型”字段,如下所示:

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进入数据库时​​,“状态”模型字段的默认值是None ,应该是'N' 此外,当我尝试使用Python SQL脚本插入一条记录到同一个数据库表,它抛出一个错误:“ 警告:(1364,‘现场‘状态’没有默认值’)”。 我已经搜索了整个论坛,但找不到任何类似的问题,请帮忙。

在模型中添加的默认值不会反映在生成的SQL DDL语句中。 之所以这样是最有可能的,是因为没有什么能阻止人们使用可调用函数作为默认值,而可调用键运行复杂的代码来找出默认值。 这些可调用对象显然无法替换到数据库中。

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

注意 :您可能必须导出DJANGO_SETTINGS_MODULE env变量才能DJANGO_SETTINGS_MODULE起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM