Diciamo che ho due applicazioni Django:Django: esiste un modo per avere il modello "through" in un ManyToManyField in un'app diversa rispetto al modello che contiene ManyToManyField?
- concorsi - che gestirà i dati sulla concorrenza
- voci - che gestirà la funzionalità relativa ai concorrenti che entrano in competizioni
Nel app delle gare Ho un modello che rappresenta una sezione di una competizione:
class Division(models.Model):
competition = models.ForeignKey(Competition)
discipline = models.CharField(max_length=1, choices=DISCIPLINE_CHOICES)
age_group = models.ForeignKey(AgeGroup)
participants = models.ManyToManyField(Competitor, through='Entry')
voglio mettere il modello di ingresso in app voci:
class Entry(models.Model):
division = models.ForeignKey('Division')
competitor = models.ForeignKey(Competitor)
withdrawn = models.BooleanField(default=False)
Come posso risolvere il from ... import ... dichiarazioni, in modo che funzionino? Quando ho messo in dichiarazioni di importazione, come from entries.models import Entry
mi vengono i modelli da queste applicazioni ignorati dalla syncdb (perché le importazioni sono circolari) o quando rimuovo una o entrambe le ricevo errori di convalida:
Error: One or more models did not validate: entries.entry: 'division' has a relation with model Division, which has either not been installed or is abstract. competitions.division: 'participants' specifies an m2m relation through model Entry, which has not been installed
capisco perché questo succede, ma non ho idea di come cambiarlo, in modo che funzioni (senza ricorrere allo spostamento del modello Entry nell'app delle competizioni, cosa che davvero non voglio fare).
puoi pubblicare la classe 'Competitor'? – czarchaic