django';没有此类表格';当syncdb
这是我的模型:django';没有此类表格';当syncdb,django,django-syncdb,Django,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 = m
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:没有这样的表:talk\u basemodeltalk
我已经将应用程序放在我的settings.py
上,即talk
我真的不知道这是什么原因,唯一的线索是
BaseModelTalk
上的类Meta
,如果我对该行进行注释,我就不会出错。错误原因:我们不能在模型子类中明确定义自定义或非自定义管理器。只需从BaseModelTalk
中删除对象
行,并将其放置在每个模型上abstract=False
即可解决此问题。您可能希望尝试使用命令manage.py sql talk
获取所有用于创建“talk”应用程序的sql命令的输出,并在sql shell中手动运行它们(manage.py dbshell
)一个接一个直到你找到错误。@mawimawi即使在我键入manage.py sql talk
什么是完整的回溯?mawimawi仍然是一样的:django.db.utils.DatabaseError:没有这样的表:talk\u basemodeltalk
完整的回溯会很有趣。不仅仅是最后一行。。。