9👍
Azd325,
it is as simple as it sounds, this field will not be part of the serialized object..
Although, I guess your question concerns to models that are being migrated and have a generated ID with serialize=False, right? such as in here.. There isn’t really a documentation on this because it is Django’s engine trick to create an intrinsic ID since you decided not to declare an explicit ID for your object..
Some additions of tests I just made
Create a model without an explicit ID
class Model1Test(models.Model):
justafield = models.CharField(max_length=1000)
Migration results
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)),
],
),
]
Database-level script
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)
)
Some good reasons to do that from Quassnoi:
- You need your table to be joinable on something
- If you want your table to be clustered, you need some kind of a primary key
- If your table design does not need a primary key, rethink your design: most probably, you are missing something. Why keep identical records?
1👍
This question bothered me too. I wasn’t able to find any documentation that answers the question "why", but after thinking this through here’s where I landed.
When you’re serializing an object, you’re communicating your information "out". Frequently over the network, or maybe another "consuming program" on the same server(s).
If the primary key was auto generated by Django, it’s not really "information". It’s an aid to organizing (reading, writing) that data within Django. There’s no benefit to serializing it and sending it over to a different system (which may have its own way of organizing data other than a primary key, or could simply create its own primary key without losing any value from the original data).
I’ve tried to create my own primary key and tell Django that I want to serialize it. But Django always overrides me and uses serialize=False
I am not entirely sure why Django does that, but at least that’s one decision out of my hands.
PS: I can think of one scenario where I would’ve liked to serialize my primary key. If it was a foreign key in a different table. But it’s really a hypothetical, I have not actually come across that use case practically.
- Django Get Absolute URL
- Customize the djoser create user endpoint
- Logging formatters in django
- In MVC (eg. Django) what's the best place to put your heavy logic?
- Django queryset filtering by ISO week number