Web2py: IntegrityError('NOT NULL 约束 failed:post.message
Web2py: IntegrityError('NOT NULL constraint failed:post.message
我以为我已经逃脱/解决了这个错误。但现在卡住了。我的 db.py 代码:
Post = db.define_table('post',
Field('message', 'text', requires=IS_NOT_EMPTY(), notnull=False),
Field('answers', 'text', requires=IS_NOT_EMPTY(), notnull=False),
auth.signature
)
Post.is_active.readable=False
Post.is_active.writeable=False
控制器:
@auth.requires_login()
def index():
db.post.answers.writable=False
db.post.answers.readable=False
form = SQLFORM(post, formstyle='divs')
if form.process().accepted:
pass
messages = db(post).select(orderby=~post.created_on)
.......code
#after several codes in now need to post a message to answers field, WITHOUT using a form in the view page
db.post.insert(answers=report)
在我看来:
{{for msg in messages:}}
code
{{=msg.message}}
{{report from answers field}}
我的问题是我不断收到错误:IntegrityError('NOT NULL constraint failed:post.message
如何解决这个错误?
亲切的问候
如果数据库 table 最初是用 notnull=True
创建的,以后将模型更改为 notnull=False
将没有效果,因为删除 NOT NULL
约束需要外部工具(DAL 无法删除此类约束)。
正如您在评论中所建议的那样,您可以将该字段的默认值设置为空字符串之类的东西,但如果您确实想要允许空值,则应该改用数据库管理工具来从数据库架构中删除约束。
我以为我已经逃脱/解决了这个错误。但现在卡住了。我的 db.py 代码:
Post = db.define_table('post',
Field('message', 'text', requires=IS_NOT_EMPTY(), notnull=False),
Field('answers', 'text', requires=IS_NOT_EMPTY(), notnull=False),
auth.signature
)
Post.is_active.readable=False
Post.is_active.writeable=False
控制器:
@auth.requires_login()
def index():
db.post.answers.writable=False
db.post.answers.readable=False
form = SQLFORM(post, formstyle='divs')
if form.process().accepted:
pass
messages = db(post).select(orderby=~post.created_on)
.......code
#after several codes in now need to post a message to answers field, WITHOUT using a form in the view page
db.post.insert(answers=report)
在我看来:
{{for msg in messages:}}
code
{{=msg.message}}
{{report from answers field}}
我的问题是我不断收到错误:IntegrityError('NOT NULL constraint failed:post.message
如何解决这个错误? 亲切的问候
如果数据库 table 最初是用 notnull=True
创建的,以后将模型更改为 notnull=False
将没有效果,因为删除 NOT NULL
约束需要外部工具(DAL 无法删除此类约束)。
正如您在评论中所建议的那样,您可以将该字段的默认值设置为空字符串之类的东西,但如果您确实想要允许空值,则应该改用数据库管理工具来从数据库架构中删除约束。