2012-12-18 39 views
0

这里是我的模型时:的Django '没有这样的表' 执行syncdb

class BaseModelTalk(models.Model): 

    name   = models.CharField('Name', max_length = 100) 
    slug   = models.SlugField('Slug', blank = True) 
    creator   = models.ForeignKey('person.Person') 
    date_created = models.DateTimeField(default = now) 
    objects   = CustomTalkManager() 

    class Meta: 
     abstract = True 

    def save(self, *args, **kwargs): 
     if not self.id: 
      self.slug = slugify(self.name) 
     super(BaseModelTalk, self).save(*args, **kwargs) 

    def __unicode__(self): 
     return u'%s' % self.slug 

class Talk(BaseModelTalk): 

    tags   = TaggableManager() 
    description  = models.TextField('Talk description') 

    class Meta: 
     verbose_name = 'Talk' 
     verbose_name_plural = 'Talks' 

class ThreadTextRating(RatedItemBase): 
    content_object = models.ForeignKey('talk.ThreadText') 

class ThreadImageRating(RatedItemBase): 
    content_object = models.ForeignKey('talk.ThreadImage') 

class ThreadLinkRating(RatedItemBase): 
    content_object = models.ForeignKey('talk.ThreadLink') 

class Thread(BaseModelTalk): 

    THREAD_TYPE = (('text', 'Text'), 
        ('image', 'Image'), 
        ('link', 'Link')) 

    type   = models.CharField('Thread\'s type', max_length = 5, choices = THREAD_TYPE, blank = True, null = True) 

    class Meta: 
     abstract = True 

class ThreadText(Thread): 

    ratings   = Ratings(ThreadTextRating) 
    talk   = models.ForeignKey('talk.Talk', related_name = 'text_threads') 
    content   = models.TextField('Thread\'s context') 

    class Meta: 
     verbose_name = 'Text' 
     verbose_name_plural = 'Text\'s' 

class ThreadImage(Thread): 

    ratings   = Ratings(ThreadImageRating) 
    talk   = models.ForeignKey('talk.Talk', related_name = 'image_threads') 
    image   = ImageField('Thread\'s image', upload_to = 'thread/image/') 

    class Meta: 
     verbose_name = 'Image' 
     verbose_name_plural = 'Image\'s' 

class ThreadLink(Thread): 

    ratings   = Ratings(ThreadLinkRating) 
    talk   = models.ForeignKey('talk.Talk', related_name = 'link_threads') 
    link   = models.URLField('Thread\'s link') 

    class Meta: 
     verbose_name = 'Link' 
     verbose_name_plural = 'Link\'s' 

每次我跑syncdb,我得到了一个错误:django.db.utils.DatabaseError: no such table: talk_basemodeltalk

我已经把应用程序放在我的settings.py这是talk

我真的不知道是什么原因造成的,唯一的线索是class MetaBaseModelTalk如果我评论那条线,我没有错误。

+0

你可能想尝试命令'manage.py sql talk'来获取所有sql命令的输出以创建你的“talk”应用程序,并在你的sql shell('manage.py dbshel​​l')中手动运行它们一个直到你发现错误。 – mawimawi

+0

@mawimawi即使在输入'manage.py sql talk'时也会出现错误。 –

+0

什么是完整的回溯? – mawimawi

回答

1

错误原因:我们无法对模型进行子类化,我们在那里明确定义了一个管理器,自定义或非定制。只需从BaseModelTalk中删除objects行,并将其放置在每个型号上,其中abstract = False将修复它。

相关问题