Ber*_*diz 10 python mysql django
我创建了以下测试模型.该模型包含具有默认值的各种字段.
class TestModel(models.Model):
name = models.CharField(max_length=32)
x = models.IntegerField(default=0)
y = models.IntegerField(default=1, null=True)
z = models.IntegerField(default=0, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
之后,我运行迁移命令,并在迁移代码后导出Django.如您所见,默认值使用默认参数填充.
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='TestModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=32)),
('x', models.IntegerField(default=0)),
('y', models.IntegerField(default=1, null=True)),
('z', models.IntegerField(default=0, null=True, blank=True)),
],
),
]
Run Code Online (Sandbox Code Playgroud)
最后,我使用Django的迁移命令获得了MySQL代码.
BEGIN;
CREATE TABLE `base_testmodel` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(32) NOT NULL,
`x` integer NOT NULL,
`y` integer NULL,
`z` integer NULL
);
COMMIT;
Run Code Online (Sandbox Code Playgroud)
问题:虽然,我将默认值设置为1和0,但它不会出现在SQL代码中.这是Django的一个功能吗? - 或 - 我做错了什么?
Ala*_*air 15
在Django中为模型字段设置默认值时,它不包含在Django生成的SQL模式中.
只要您使用ORM创建模型实例,那么这无关紧要,因为Django将设置默认值.但是,如果使用原始SQL创建模型实例,则需要确保在需要时使用字段的默认值.
有一个故障单470用于向SQL模式添加默认值,但它已被关闭,因为无法修复.记住,default可以是可调用的,也可以是常量.将这些可调用项添加为SQL模式的默认值是不可能的.
如果确实需要将缺省值添加到SQL模式,则可以手动运行alter table语句,或将其添加到迁移中.
| 归档时间: |
|
| 查看次数: |
1916 次 |
| 最近记录: |