2011-01-01 10 views
6

Si consideri il seguente (semplificato) Django Modelli:molti a molti relazione che è o non è stato installato o è astratta

class productFamily(models.Model): 
    name = models.CharField(max_length = 256) 
    text = models.TextField(blank = False) 
    image = models.ImageField(upload_to="products/img/") 
    def __unicode__(self): 
     return self.name 

class productModel(models.Model): 
    productFamily = models.ForeignKey('productFamily') 
    productFamily.help_text = 'ProductFamily to which this model belongs.' 
    artNumber = models.CharField(max_length=100) 
    name = models.CharField(max_length = 256) 
    productDownloads = models.ManyToManyField('productModelDownLoad') 
    productDownloads.help_text = 'Files associated to this product Model.' 
    def __unicode__(self): 
     return self.name 

class productModelDownload(models.Model): 
    file = models.FileField(upload_to="products/downloads/") 
    def __unicode__(self): 
     return str(self.file) 

ottengo il seguente errore:

products.productmodel: 'productDownloads' has an m2m relation with model productModelDownLoad, which has either not been installed or is abstract.

ho trovato una pagina in i documenti di django che sembrano affrontare questo, ma non riesco a capire cosa significhi: http://www.djangoproject.com/documentation/models/invalid_models/

Il modello sembra valido per me, quindi cosa è il problema qui?

risposta

1

Interessante ci sono due modi per risolvere questo :
a) la risposta di Thomas fa il trucco,
b) Ma, così fa di Mike Korobov:
C'è una lettera maiuscola randagio nel nome del campo nel rapporto:

productDownloads = models.ManyToManyField('productModelDown*L*oad')

La correzione di questo capitale vagante risolve anche questo problema.

+1

La parte interessante è che, modificando l'ordine dei modelli, vengono convalidati. Questo è persino desiderato? –

9

È necessario posizionare la classe productModelDownload prima della classe productModel. Vengono elaborati dall'alto verso il basso durante la convalida dei modelli.

+0

Ok, l'ha fatto-grazie. –

2

models.ManyToManyField ('productModelDownLoad') - 'Load' è maiuscolo

classe productModelDownload (models.Model): - 'carico' è in minuscolo

+0

Grazie, l'ho notato anch'io. –

Problemi correlati