widgets regexfield formularios form fields example combofield python django autofield

python - regexfield - formularios django



Cómo hacer que Django AutoFields comience en un número mayor (5)

Aquí esta lo que hice..

def update_auto_increment(value=5000, app_label="remrate_data"): """Update our increments""" from django.db import connection, transaction, router models = [m for m in get_models() if m._meta.app_label == app_label] cursor = connection.cursor() for model in models: _router = settings.DATABASES[router.db_for_write(model)][''NAME''] alter_str = "ALTER table {}.{} AUTO_INCREMENT={}".format( _router, model._meta.db_table, value) cursor.execute(alter_str) transaction.commit_unless_managed()

Para nuestra aplicación Django, nos gustaría que AutoField comience en un número distinto a 1. No parece haber una manera obvia de hacerlo. ¿Algunas ideas?


Como han dicho los otros, esto sería mucho más fácil de hacer en el lado de la base de datos que en el lado de Django.

Para Postgres, sería así : ALTER SEQUENCE sequence_name RESTART WITH 12345; Mira los documentos de tu propio DB para saber cómo lo harías allí.


Los campos automáticos dependen, hasta cierto punto, del controlador de base de datos que se utiliza.

Tendrá que mirar los objetos realmente creados para la base de datos específica para ver qué está sucediendo.


Para MySQL, creé una señal que hace esto después de syncdb:

from django.db.models.signals import post_syncdb from project.app import models as app_models def auto_increment_start(sender, **kwargs): from django.db import connection, transaction cursor = connection.cursor() cursor = cursor.execute(""" ALTER table app_table AUTO_INCREMENT=2000 """) transaction.commit_unless_managed() post_syncdb.connect(auto_increment_start, sender=app_models)

Después de un syncdb, se ejecuta la instrucción alter table. Esto lo eximirá de tener que iniciar sesión en mysql y emitirlo manualmente.

EDITAR: Sé que este es un hilo viejo, pero pensé que podría ayudar a alguien.


Un vistazo rápido a la fuente muestra que no parece haber ninguna opción para esto, probablemente porque no siempre aumenta en uno; selecciona la siguiente clave disponible: "Un IntegerField que se incrementa automáticamente según los ID disponibles" - djangoproject.com