python - 主键字段上的 serialize=False 是什么意思?

标签 python django django-models

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

谢谢

最佳答案

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. 你需要你的 table 可以加入某些东西
  2. 如果你想让你的表聚集,你需要某种主键
  3. 如果您的表设计不需要主键,请重新考虑您的设计:很可能您遗漏了一些东西。为什么要保留相同的记录?

关于python - 主键字段上的 serialize=False 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229412/

相关文章:

python - reshape Pandas Dataframe 切片列并将它们添加为行

python - 使用 python 将日期列添加到 csv

python - 使用 modelform 的 Django 身份验证

database - 表中的独特组合

django - 如何向灯具添加与 'through' 关系的 ManyToMany 字段?

python - 简单的 Django 表单/模型保存问题

python - Django EmailField 接受任何值(包括空白)

python - pytorch 如何从张量中删除 cuda()

sql - Django:如何正确删除数据库记录以防止主键重用?

python - 没有 Django 模型的 Graphite 烯 Django?