2009-03-24 15 views
6

Estoy usando una base de datos construida manualmente (Postgres) con Django. Con "inspectdb" pude crear automáticamente un modelo para él. El problema es que algunas tablas tienen múltiples claves primarias (para relaciones de muchos a muchos) y no son accesibles a través de Django.Uso de la base de datos 'anterior' con django

¿Cuál es la mejor manera de acceder a estas tablas?

Respuesta

4

No hay forma de utilizar claves primarias compuestas en el ORM de Django a partir de ahora (hasta v1.0.2).

sólo ocurren tres soluciones/soluciones:

  1. Hay una fork de Django con un parche pk compuesta en github que es posible que desee probar.
  2. Puede usar SQLAlchemy junto con Django.
  3. Tiene que agregar un campo de clave principal de campo único a esas tablas.
+2

+1: solucione su base de datos; no debe haber varias claves principales en ninguna tabla. –

+0

@ S.Lott: Mmm, ese tipo de comentario es solo pedir revolver todo el debate sobre las llaves naturales vs. – Powerlord

+0

opción 3 es probablemente la más fácil ... es una base de datos antigua de todos modos –

0

Django tiene soporte para many-to-many relationships. Si desea utilizar una tabla auxiliar para gestionar estas relaciones, ManyToManyField toma un argumento directo que especifica la tabla que se utilizará. No se puede modelar nada terriblemente complejo de esta manera, pero es bueno para la mayoría de las aplicaciones simples.

Cuestiones relacionadas