【发布时间】:2017-02-14 15:00:43
【问题描述】:
我没有在 Django 文档和源代码中找到 serialize=False 在主键字段上的原因。设置它有什么特殊原因吗?
谢谢
【问题讨论】:
标签: python django django-models
我没有在 Django 文档和源代码中找到 serialize=False 在主键字段上的原因。设置它有什么特殊原因吗?
谢谢
【问题讨论】:
标签: python django django-models
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 的一些充分理由这样做:
【讨论】: