Sviluppo una determinata applicazione, che ho trovato con il database e lo schema modello specificati. Sto usando la versione 1.8.2 di Django. Di seguito viene presentato un problema. I campi non necessari sono stati omessi, i nomi dei modelli sono inventati ai fini di un esempio, perché non posso rivelarli. Si consideri il seguente modelli A e B.Come creare una chiave primaria composta da due campi in Django?
class B (models.Model):
name = models.CharField(max_length=100)
class A (models.Model):
name = models.CharField(max_length=100, primary_key=True)
related_name = models.ForeignKey(B, null=True, blank=True)
Dopo un lungo periodo di tempo un progetto la possibilità che ci possano essere diversi con lo stesso nome A, ma con diversa chiave esterna B. In questo caso particolare, vorrei modellare la chiave primaria "A" è composta da due campi: nome e nome correlato. Come creare una chiave del genere consiste in due campi in django?
è possibile modificare la chiave primaria di 'A' come predefinito Django' id' invece? Sembra una soluzione ovvia. –
Ciao :-) Grazie per la risposta. Questa è una buona soluzione, ma nel mio caso molte tabelle hanno come tabella delle chiavi esterne "A" e il passaggio all'ID predefinito sarebbe un grande sforzo. Inoltre, un sacco di codice che utilizza query come "A.objects.get (pk =" something ")" e modifica il tipo di chiave primaria richiede molto lavoro. Per questo motivo, sto cercando una soluzione che non cambia il tipo di chiave. La base ha molti anni. –
Ok. In tal caso, non penso che questo possa essere risolto in django. Django richiede una singola chiave primaria unica per ogni istanza. Anche se si potesse usare una chiave primaria composta, non sono sicuro se sia una buona idea quando uno dei campi nel pk è una chiave straniera nullable. –