Domanda

Questo è probabilmente un problema di progettazione db, ma non riuscivo a capire meglio. Tra molti altri, ho questi modelli:

class User(models.Model):
  name = models.CharField( max_length=40 )
  # some fields omitted
  bands = models.ManyToManyField( Band )

e

class Band(models.Model):
  creator = models.ForeignKey( User )
  # some fields omitted
  name = models.CharField( max_length=40 )

Quindi, in pratica, ho un'entità utente, che ha molti a molti relazione con un'entità band. La torsione è che io voglio un utente speciale, che ha "creato" la band sul sito per avere capacità di editing speciali. Così sono andato avanti, e aggiunto un ForeignKey chiamato creatore. Il codice non poteva correre, perché Banda è arrivata dopo l'utente nella fonte. Così ho dichiarato in avanti class Band(models.Model): pass. Purtroppo, questo non sembra essere exatly una buona idea, perché ora Band è l'unico modello che non mostra eventuali elementi di interfaccia in Admin Django (Bande modello è lì, semplicemente non può essere modificato).

La mia domanda è che cosa il cambiamento dovrei fare nei modelli per ottenere questo lavoro correttamente? (Se presente)

È stato utile?

Soluzione

See: http://docs.djangoproject.com/en / dev / ref / modelli / campi / # ForeignKey , che dice:

  

Se è necessario creare una relazione su un modello che non ha   ancora stati definiti, è possibile utilizzare il nome del modello, piuttosto   rispetto al modello oggetto stesso:

 class Car(models.Model):
      manufacturer = models.ForeignKey('Manufacturer')
      # ...

 class Manufacturer(models.Model):
      # ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top