我没有在Django文档和源代码中找到主键字段serialize=False
的原因。是否有特殊原因设置它?
由于
答案 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:
这样做的一些很好的理由