【发布时间】:2015-11-28 08:56:56
【问题描述】:
我正在创建一个Django Application,而我的models.py 是:
class Registration(models.Model):
uid = models.AutoField(primary_key=True, default=0)
uname = models.CharField(max_length=100, blank=False, null=False)
upassword = models.CharField(max_length=100, blank=False, null=False)
uphone = models.IntegerField(blank=True, null=True)
uhid = models.ForeignKey('Hood', blank=False, null=False, default='ABC')
uemail = models.EmailField(blank=False, null=False, default='abc402@nyu.edu')
uintro = models.TextField(null=True, blank=True)
uphoto = models.ImageField(upload_to='', blank=False, null=False, default='static/img/natural_join_is_inner_join.png')
uhood = models.CharField(max_length=10, null=True)
uaddress = models.CharField(max_length=100, default='ABC')
# django automatically uses the media root which you have declared in your settings, define that to `upload_to`
def __unicode__(self):
return self.uname
然后我运行以下命令:
python manage.py makemigrations
python manage.py migrate
但它显示了一个错误:
为表的“uid”列指定了多个默认值 "registration_registration"
谁能帮我解决这个问题?堆栈溢出的其他链接没有太大帮助!
当我删除 id uid 字段时,Django 正在向我展示:
You are trying to add a non-nullable field 'id' to registration without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
问题是为什么我应该为 django 自动创建的id 提供默认值?
更新:我已删除迁移文件夹,所以我解决了上述问题,但现在出现错误:
“创建新内容类型时出错。请确保内容类型” RuntimeError:创建新内容类型时出错。请确保 在尝试单独迁移应用程序之前先迁移 contenttypes。
【问题讨论】:
-
显然你的迁移搞砸了。尝试再次删除迁移文件夹并在 makemigrations 之前运行一次迁移。
-
我现在没有迁移文件夹。我打算删除数据库并创建一个新数据库?你认为这是个好主意吗!
-
嗯,这真的取决于其中的数据......如果它只是一个没有任何内容的新开发数据库,我会删除它。如果不知道许多其他细节,很难说出究竟发生了什么。
标签: python django django-models django-admin