【问题标题】:What means the serialize=False on Primary-key field?主键字段上的 serialize=False 是什么意思?
【发布时间】:2017-02-14 15:00:43
【问题描述】:

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

谢谢

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    Azd325,

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

    不过,我猜您的问题与正在迁移并且生成的 ID 为 serialize=False 的模型有关,对吧?例如here.. 并没有真正的文档,因为它是 Django 的引擎技巧来创建内在 ID,因为您决定不为您的对象声明显式 ID..

    我刚刚添加的一些测试

    创建一个没有明确 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. 如果您的表设计不需要主键,请重新考虑您的设计:很可能,您遗漏了一些东西。为什么要保留相同的记录?

    【讨论】:

      猜你喜欢
      • 2014-11-05
      • 2018-03-03
      • 2021-12-10
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 2021-12-15
      • 2011-02-14
      • 2010-10-29
      相关资源
      最近更新 更多