2009-03-24 10 views
6

Uso un database (Postgres) creato manualmente con Django. Con "inspectdb" sono riuscito a creare automaticamente un modello per questo. Il problema è che alcune tabelle hanno più chiavi primarie (per le relazioni molti-a-molti) e non sono accessibili tramite Django.Utilizzo del database "vecchio" con django

Qual è il modo migliore per accedere a queste tabelle?

risposta

4

Non esiste un modo per utilizzare le chiavi primarie composite nell'ORM di Django al momento (fino alla v1.0.2).

mi viene in mente solo di tre soluzioni/soluzioni:

  1. C'è una fork di Django con una patch pk composito a github che si potrebbe desiderare di provare.
  2. È possibile utilizzare SQLAlchemy insieme a Django.
  3. È necessario aggiungere un campo chiave primaria singolo campo a quelle tabelle.
+2

+1: corregge il database: non ci dovrebbero essere più chiavi primarie in nessuna tabella. –

+0

@ S.Lott: Mmm, quel tipo di commento sta solo chiedendo di suscitare l'intero dibattito sulle chiavi naturali e surrogate. – Powerlord

+0

l'opzione 3 è probabilmente la più semplice ... è comunque un vecchio database –

0

Django ha supporto per many-to-many relationships. Se si desidera utilizzare una tabella di supporto per gestire queste relazioni, ManyToManyField accetta un argomento through che specifica la tabella da utilizzare. Non è possibile modellare nulla di così terribilmente complesso in questo modo, ma è utile per la maggior parte delle applicazioni semplici.

Problemi correlati