La comprobación noself.pk == None
es suficiente para determinar si el objeto se va a insertar o actualizar en la base de datos.
El Django O / RM presenta un truco especialmente desagradable que es básicamente para verificar si hay algo en la posición PK y, de ser así, hacer una ACTUALIZACIÓN, de lo contrario, hacer un INSERT (esto se optimiza a un INSERT si el PK es Ninguno).
La razón por la que tiene que hacer esto es porque se le permite establecer la PK cuando se crea un objeto. Aunque no es común cuando tiene una columna de secuencia para la clave primaria, esto no se cumple para otros tipos de campo de clave primaria.
Si realmente quiere saber, debe hacer lo que hace el O / RM y buscar en la base de datos.
Por supuesto, usted tiene un caso específico en su código y de que es muy probable que self.pk == None
todo lo que necesita saber dice, pero es no una solución general.
UUIDField pk