我在现有模型中添加了多对多字段,并期望syncdb
创建一个新表,但那里什么也没有。这就是模型的样子:
class Author(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField()
def __unicode__(self):
return "{0} {1}".format(self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
def __unicode__(self):
return self.title
运行sql myapp
会使用新表打印正确的语句,但在运行syncdb
时不会反映出来。 validate
也不会返回任何错误。有谁知道这可能是什么问题?还是更好的诊断?
答案 0 :(得分:15)
syncdb命令不会按设计为现有模型创建多对多的表。该决定在ticket 2229上解释。
这给你留下了一些选择。
答案 1 :(得分:5)
我在django docs中找到了这个解释:SchemaEvolution。
数据库迁移的事实标准是Django South。
它并不完美,但它的效果非常好。在运行迁移文件之前,应始终检查(并在必要时进行编辑),以确保它实际执行了它应该执行的操作。 您可以查看他们的教程here。
另外,如果您运行:
python manage.py inspectdb > somefile.txt
如果您的数据库结构与您的django模型匹配,您可以快速查看。