码迷,mamicode.com
首页 > 其他好文 > 详细

Django错误 OperationalError: no such column: xxx

时间:2018-09-15 17:34:28      阅读:438      评论:0      收藏:0      [点我收藏+]

标签:erro   blank   cas   bool   python   ror   技术分享   model   default   

模型前后操作如下:

第一次迁移:

class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default=‘‘)
    code = models.TextField()
    linenos = models.BooleanField(default=True)
    language = models.CharField(choices=LANGUAGE_CHOICES, default=python, max_length=100)
    style = models.CharField(choices=STYLE_CHOICES, default=friendly, max_length=100)

更改后:

class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default=‘‘)
    code = models.TextField()
    linenos = models.BooleanField(default=True)
    language = models.CharField(choices=LANGUAGE_CHOICES, default=python, max_length=100)
    style = models.CharField(choices=STYLE_CHOICES, default=friendly, max_length=100)
    owner = models.ForeignKey(auth.User, related_name=snippets, on_delete=models.CASCADE)
    highlighted = models.TextField()

 

Djnago修改数据库分以下三步:

1、对models.py进行更改(正常)

2、使用makemigrations创建迁移

3、使用migrate执行迁移

分析:在该修改后模型后,第二次同步数据库时code和highlighted字段不能为空。如果第一次就创建highlighted字段,则无影响,因为该表没有现有的行。如果数据表第一次已经创建并且已经在表插入数据,则必须定义一个默认值来填充已有的行, 否则数据库会因为违反数据的完整性而不接受数据表更改。

技术分享图片

解决方法:改为

code = models.TextField(default =‘‘)

highlighted = models.TextField(default =‘‘)

 

Django错误 OperationalError: no such column: xxx

标签:erro   blank   cas   bool   python   ror   技术分享   model   default   

原文地址:https://www.cnblogs.com/delav/p/9651495.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!