【发布时间】:2014-04-15 05:30:31
【问题描述】:
我已经完全擦除了所有数据库表,以便将新字段添加到模型中,因为当 SQL 数据仅包含 dummy 时,擦除 SQL 表是最快的方法,而无需使用“south”路径用于测试目的的数据。
这是我的模型:
class Student(models.Model):
uid = models.ForeignKey(User)
title = models.CharField(max_length=250, help_text='The student name.')
resume = models.FileField(upload_to=get_upload_resume_name)
location = models.ForeignKey(Location)
country = models.ForeignKey(Country)
prim_interest = models.CharField(max_length=250, help_text='Maximum 250 characters.')
sec_interest = models.CharField(max_length=250, help_text='Maximum 250 characters.')
cellphone = models.IntegerField(default=0)
email_verified = models.BooleanField(default=False)
thumbnail = models.FileField(upload_to=get_upload_file_name)
def __unicode__(self):
return self.title
当我在删除所有表后立即调用 syncdb 时,Django 并未创建我添加的最后一个名为“thumbnail”的字段。
无论对models.py 应用什么重大更改,我完全擦除表格的方法始终有效,但突然之间,这种情况并非如此。我可以向您展示更多代码 sn-ps,但我不知道 Django 项目中的其他地方对生成模型有直接影响。
什么可能导致syncdb拒绝将此新字段“缩略图”写入数据库中的学生表?
【问题讨论】:
-
你在使用南这个应用程序吗?我不知道你说的我的彻底擦桌子的方法一直有效是什么意思,但正确的做法是简单地
python manage.py dbshell < python manage.py sqlclear yourappname -
如果你只想使用syncdb,你可以删除为你的db创建的文件。我认为它被称为 sqlite3.db。删除它,然后再次使用syncdb。应该工作
-
看一下syncdb生成的sql查询。它说什么?