什么意味着主键字段上的serialize = False?

时间:2017-02-14 15:00:43

标签: python django django-models

我没有在Django文档和源代码中找到主键字段serialize=False的原因。是否有特殊原因设置它?

由于

1 个答案:

答案 0 :(得分:4)

Azd325,

听起来很简单,这个字段不会是序列化对象的一部分..

虽然,我猜您的问题涉及正在迁移的模型,并且生成的ID为serialize = False,对吗?例如在here中。由于你决定不为你的对象声明一个显式ID,因此创建一个内在ID是Django的引擎技巧,因此没有真正的文档。

我刚刚做了一些测试

创建没有显式ID的模型

class Model1Test(models.Model):
    justafield = models.CharField(max_length=1000)

迁移结果

class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Model1Test',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('justafield', models.CharField(max_length=1000)),
            ],
        ),
    ]

数据库级脚本

CREATE TABLE public.module1_model1test
(
  id integer NOT NULL DEFAULT nextval('module1_model1test_id_seq'::regclass),
  justafield character varying(1000) NOT NULL,
  CONSTRAINT module1_model1test_pkey PRIMARY KEY (id)
)

Quassnoi

这样做的一些很好的理由
  1. 你需要你的桌子可以加入
  2. 如果您希望将表格群集,则需要某种主键
  3. 如果您的桌面设计不需要主键,请重新考虑您的设计:最有可能的是,您遗失了一些东西。为什么要保留相同的记录?
相关问题