2011-12-08 15 views
8

¿Hay alguna forma de establecer el contador de valores de id para objetos en Django?¿Hay alguna forma de establecer el valor de identificación de los nuevos objetos de Django para que comiencen en un cierto valor?

Por ejemplo, tengo un conjunto de objetos 'Video' que están actualmente en id = 100 la próxima vez que cree un objeto de tipo 'Video' será id = 101. Sin embargo, me gustaría que todos los objetos de video recién creados comiencen en id = 2000. ¿Hay alguna forma de hacer esto?

+0

Un truco feo sería hacer un accesorio que hace una fila ficticia en su base de datos con ID = 1999. El próximo ID autogenerado sería 2000 entonces. –

+0

realmente? entonces el auto_increment solo comienza desde el max en el db? es decir. no tratando de rellenar ningún agujero? No me di cuenta de eso. eso está bien para lo que necesito hacer. ¡Gracias! –

+0

ver mi respuesta más abajo. –

Respuesta

3

Puede hacer que un accesorio cree una fila ficticia en su base de datos con ID = 1999. El próximo ID autogenerado sería 2000 entonces.

Esta solución probablemente dependa del back-end de la base de datos para 'continuar donde lo dejó'. Al menos MySql y PostgreSQL hacen esto (supongo que cada backend hace esto).

También hay una solución para MySql solamente (por lo que yo sé) que consiste en una instrucción SQL ALTER TABLE tbl AUTO_INCREMENT = 100;

que no serían la base de datos agnóstico más, sin embargo.

9

Se puede especificar el ID cuando se crea el objeto, siempre y cuando lo haces antes de guardar:

new = Video() 
new.id = 2000 
new.save() 

Se podía calcular el ID que quería cada vez que - aunque no estoy seguro de lo que es mal con los campos de identificación automática de Django;)

+1

Creo que el OP significaba preguntar si hay una forma de configurar en Django el valor de inicio para la secuencia de auto-id. –

Cuestiones relacionadas