相关疑难解决方法(0)

Django在数据库中实现默认值

我在模型上的一个字段是:

class SomeModel(models.Model):
    some_field = models.CharField(max_length=10, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

然后,我将模型更改为:

class SomeModel(models.Model):
    some_field = models.CharField(max_length=10, default='')
Run Code Online (Sandbox Code Playgroud)

当我运行django-admin sqlmigrate somemodels somemigration以检查迁移时,发现以下更改:

ALTER TABLE "somemodels" ALTER COLUMN "some_field" SET DEFAULT '';
UPDATE "somemodels" SET "some_field" = '' WHERE "some_field" IS NULL;
ALTER TABLE "somemodels" ALTER COLUMN "some_field" SET NOT NULL;
ALTER TABLE "somemodels" ALTER COLUMN "some_field" DROP DEFAULT;
Run Code Online (Sandbox Code Playgroud)

我不理解为什么Django DROP DEFAULT在表中应用a ,因为我正在创建默认值。如果这是正确的,Django如何实现默认值?

有关我的工具的信息:

  • PostgreSQL 9.5;
  • Django 1.11b1;

python sql django postgresql django-models

4
推荐指数
1
解决办法
1357
查看次数

Django Postgresql 在迁移时删除列默认值

我面临着表格默认值的问题。

例如我有这个模型:

class model1(models.Model):
        field1 = models.CharField(max_length=50, default='My Default Value 1',db_column='field1')
        field2 = models.CharField(max_length=10)

        class Meta:
            db_table = 'model1'
Run Code Online (Sandbox Code Playgroud)

并且 postgresql 表是在没有默认值的情况下生成的:

mydb=# \d model1
                                Table "public.model1"
 Column |         Type          |                      Modifiers                      
--------+-----------------------+-----------------------------------------------------
 id     | integer               | not null default nextval('model1_id_seq'::regclass)
 field1 | character varying(50) | not null
 field2 | character varying(10) | not null
Indexes:
    "model1_pkey" PRIMARY KEY, btree (id)
Run Code Online (Sandbox Code Playgroud)

migrate sqlmigrate 的输出是:

CREATE TABLE "model1" ("id" serial NOT NULL PRIMARY KEY, "field1" varchar(50) NOT NULL, "field2" varchar(10) NOT …
Run Code Online (Sandbox Code Playgroud)

django postgresql default migrate

3
推荐指数
1
解决办法
1390
查看次数

标签 统计

django ×2

postgresql ×2

default ×1

django-models ×1

migrate ×1

python ×1

sql ×1