﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31297	force_insert not respected by parent class with default primary key	Abhijeet Viswa	Abhijeet Viswa	"Consider the following models:

{{{
class A(models.Model):
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4)
    test = models.IntegerField()


class B(A):
    test2 = models.IntegerField()
    pass
}}}

{{{
b = B()
b.test = 10
b.test2 = 20
b.save(force_insert=True)
}}}
will generate the following update/insert statements for PostgreSQL:
{{{
UPDATE ""save_force_insert_a""
SET ""test"" = 10
WHERE ""save_force_insert_a"".""uuid"" = '8275d9e0-c0fd-4489-b987-44b9dbe379b4'::UUID;


INSERT INTO ""save_force_insert_a"" (""uuid"",
                                   ""test"")
VALUES ('8275d9e0-c0fd-4489-b987-44b9dbe379b4'::UUID, 10);


INSERT INTO ""save_force_insert_b"" (""a_ptr_id"",
                                   ""test2"")
VALUES ('8275d9e0-c0fd-4489-b987-44b9dbe379b4'::UUID, 20);
}}}

It's the same even when saving a new instance of a model and the user provides the UUID. 

However, in the Model Instance Reference, it says the following: 


  Changed in Django 3.0:
  Model.save() no longer attempts to find a row when saving a new Model instance and a default value for the primary key is provided, and always executes an INSERT.


It is expected that using a force_insert (and value is provided explicitly or as a default), force_insert should be respected by the parents as well.
This isn't fully related to #18305. I believe that the ticket also talks about AutoField PKs.
"	Bug	assigned	Database layer (models, ORM)	3.0	Normal		force_insert mti		Unreviewed	0	0	0	0	0	0
