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 无法删除此类约束)。

正如您在评论中所建议的那样,您可以将该字段的默认值设置为空字符串之类的东西,但如果您确实想要允许空值,则应该改用数据库管理工具来从数据库架构中删除约束。