什么是主键字段上的serialize = False?

Azd*_*325 5 python django django-models

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

谢谢

bob*_*ujr 5

Azd325,

听起来很简单,但此字段不会成为序列化对象的一部分。

虽然,我猜您的问题与正在迁移的模型有关,并且模型的生成ID带有serialize = False,对吗?如在这里 ..是不是真的在这个文件,因为它是Django的引擎伎俩因为你决定不宣布一个明确的ID为你的对象创建固有ID ..

我刚刚做的一些测试

创建没有显式ID的模型

class Model1Test(models.Model):
    justafield = models.CharField(max_length=1000)
Run Code Online (Sandbox Code Playgroud)

迁移结果

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)),
            ],
        ),
    ]
Run Code Online (Sandbox Code Playgroud)

数据库级脚本

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)
)
Run Code Online (Sandbox Code Playgroud)

Quassnoi这样做有一些很好的理由:

  1. 您需要您的桌子可以连接某些东西
  2. 如果要对表进行集群,则需要某种主键
  3. 如果您的表设计不需要主键,请重新考虑您的设计:很可能您丢失了某些东西。为什么要保留相同的记录?

  • 这个答案对我来说没有意义 - 而且没有这方面的文档也是不行的。我需要了解它的用途,以便我知道是否要修改它以及何时使用它。 (2认同)