我没有在 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 :
- 你需要你的 table 可以加入某些东西
- 如果你想让你的表聚集,你需要某种主键
- 如果您的表设计不需要主键,请重新考虑您的设计:很可能您遗漏了一些东西。为什么要保留相同的记录?
关于python - 主键字段上的 serialize=False 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229412/