2010-11-11 21 views
8

Entonces, me pregunto cómo definir el orden de las columnas en el Modelo para que cuando Django reenvía la ingeniería para generar la base de datos, el orden de las columnas en la tabla de base de datos física ¿sí mismo?Columnas ordenando en el modelo de Django

Actualmente, algunas de mis clases de modelo son heredadas de otra clase de modelo, por lo que la clase de modelo derivada siempre pone primero las columnas de la clase principal, pero quiero controlar eso.

Gracias

+0

¿Alguna vez encontró una solución para esto? Al llamar funciones en pgsql que usan variables ROWTYPE como parámetro, necesito serializar el modelo en el orden correcto de columnas y no puedo encontrar una solución para esto (actualmente estoy tratando de entender la clase MigjanAutoDetector de django) –

Respuesta

0

Usted podría funcionar django-admin.py sql que imprimirá el SQL que crea la tabla para una o todas las aplicaciones, ajustar el SQL para satisfacer sus necesidades y ejecutarlo manualmente en alguna cáscara db de su elección!

2

Actualmente, no hay una forma incorporada de hacer esto en Django.

Me parece recordar un hilo/boleto django-dev que discutió esto, pero no puedo ver para encontrarlo en este momento. Actualizaré esto si lo encuentro (y le doy la bienvenida a cualquier otra persona si lo hacen).

Probablemente haya una forma de hackear esto en el núcleo si realmente lo necesita tanto.

+0

Hmm, gracias. Me di cuenta de que probablemente no es tan simple de implementar, porque la migración parece un poco difícil de ajustar el orden de las columnas. – zsong

+1

Sería lo suficientemente simple de hacer con un kwarg como 'after =" id "' –

0

¿Necesita controlar el orden de los campos en la base de datos o simplemente la forma en que se presentan a los usuarios? Si este último, hay otras opciones. Por ejemplo, en el administrador puede controlar el orden de los campos con fieldsets o fields.

+3

Estoy buscando lo mismo y SÍ, es importante controlar el orden de los campos en la base de datos. ¿Por qué? Para la legibilidad No solo al modificar tablas y cosas similares, sino también al extraer modelos de datos. Tengo una metaclase de TraceModel que proporciona automáticamente los campos created_on, created_by, edited_on y edited_by, pero siempre aparecen en la parte superior de cada tabla y eso NO es intuitivo. – jedmao

4

En Django 1.8 Esto funcionó para mí:

  • plazo ./manage.py makemigrations
  • editar la migración
  • reordenar la lista fields en migrations.CreateModel.

No lo he probado con herencia.