sql >> Base de Datos >  >> RDS >> PostgreSQL

Creación de objetos Django y Secuencias de Postgres

todo funciona bien El create() de Django no tiene nada que ver directamente con la secuencia de incremento. brevemente:

  • el incremento automático de postgresql (tipo 'serie') es solo un atajo de 'crear secuencia + crear campo entero con valor de secuencia como predeterminado'
  • La clave principal de campo automático de Django (identeger si no se especifica de otra manera por usted) simplemente crea un campo en serie
  • cuando especifica la identificación manualmente, postgres inserta el valor en la base de datos. cuando especifica un valor, omite el parámetro 'predeterminado', que es un comportamiento adecuado.

por lo tanto, si desea que sus inserciones incrementen la secuencia de la forma que elija, debe cambiar manualmente el valor de la secuencia usando SELECT setval('sequence_name', int_value); de lo contrario, déjelo nulo y se incrementará automáticamente:seleccione el valor actual e increméntelo en +1 (si no se especifica de manera diferente en la definición de secuencia).

otra idea es crear el objeto y luego actualizar la identificación (por supuesto, no se puede usar) y al final establecer el valor de la secuencia en la identificación máxima.