2011-05-11 126 views
3

運行syncdb時出現此錯誤Django:模型驗證錯誤ManytoManyField

似乎無法找出問題所在。請幫忙。

Error: One or more models did not validate: 
store.business: Reverse query name for field 'logo' clashes with field 'ImageBank.business'. Add a related_name argument to the definition for 'logo'. 

這裏是我的模型:

class Business(models.Model): 
    business_type = models.ManyToManyField(BusinessType) 
    business_service_type = models.ManyToManyField(ServiceType) 
    establishment_type = models.ForeignKey(EstablishmentType) 
    logo = models.ForeignKey(ImageBank, related_name = '%(class)s_logocreated',) 
    phone = PhoneNumberField() 
    address = models.ForeignKey(Address) 
    website = models.URLField() 
    name = models.CharField(max_length=64) 

    def __unicode__(self): 
     return self.name 

class ImageBank(models.Model): 
    business = models.ForeignKey('Business', related_name='%(class)s_business') 
    image = models.ImageField(upload_to="images/bank") 

    def url(self): 
     return self.image.url 

    def __unicode__(self): 
     return unicode(self.business) + " : " + unicode(self.image) 

存儲模型:

class Store(models.Model): 
    business = models.ForeignKey(Business,null=True, related_name='business_creator_set') 
    condition = models.CharField(verbose_name='What do customers have to do?',max_length = 50) 
    reward = models.CharField(verbose_name='What do customers win?',max_length = 50) 
    display = models.BooleanField(default=True) 
    date_created = models.DateTimeField(default=datetime.now) 


    def __unicode__(self): 
     return self.condition + ", " + self.reward 
+0

您是否可以添加您的Store模型?添加了 –

+0

。謝謝。 – Eva611

+0

而這仍然不起作用?添加related_name's應該已經工作 –

回答

1

試着做這樣的事情:

​​

而且,如果不工作,請嘗試更改Business上的related_name。徽標字段的內容不是logo_id。 logo_id是數據庫用於該字段的內容,可能會有衝突。

+0

嘗試了兩個建議......似乎沒有幫助。 – Eva611

+0

嗯......你把logo的related_name改成了什麼?嘗試像related_name ='%(class)s_logo' –

+0

改變它。仍然是納達。瘋了我知道。 – Eva611