我在现有模型中添加了一个多对多字段,并期望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
Run Code Online (Sandbox Code Playgroud)
运行sql myapp
使用新表打印正确的语句,但这在运行时不会反映出来syncdb
.validate
也没有返回任何错误.有谁知道这可能是什么问题?还是更好的诊断?
我在django docs中找到了这个解释:SchemaEvolution.
数据库迁移的事实标准是Django South.
它并不完美,但它的效果非常好.在运行迁移文件之前,应始终检查(并在必要时进行编辑),以确保它实际执行了它应该执行的操作.你可以在这里查看他们的教程.
另外,如果您运行:
python manage.py inspectdb > somefile.txt
Run Code Online (Sandbox Code Playgroud)
如果您的数据库结构与您的django模型匹配,您可以快速查看.