Flask-Admin在数据库中存储NULL而不是空字符串('')

时间:2018-12-14 18:06:56

标签: python-3.x flask-admin

标题说明了一切。使用flask-admin并想在我的数据库中存储一个空字符串而不是NULL,但是当我在flask-admin中将字段留空时,它将在数据库中输入NULL。如果我在flask-admin视图中键入“”,则数据库会将其存储为“''”。

我并不是在问如何在flask-admin视图中显示一个空字符串,因为其他许多人都在问。我在问我应该在flask-admin视图中键入什么,或者应该更改什么代码,以便从flask-admin视图在数据库中存储一个空字符串。

我需要这样做的原因是我的代码部分验证了有争议的表列是否为''(空字符串)。示例:db.tablename.query.filter_by(complete ='')。一种选择是将我所有的验证更改为db.tablename.query.filter_by(complete = None),但是我想在验证''时保持所有代码一致,并且将所有验证行更改为没有,所以如果我知道如何从flask-admin视图中将表格单元格设置为空白字符串,那将是最有用的。

使用python3.6

1 个答案:

答案 0 :(得分:0)

要覆盖此行为,您可以创建一个新的字段类:

import wtforms.fields

class StringField(wtforms.fields.StringField):
    def process_data(self, value):
        self.data = value or ''

process_data方法接收并存储表单数据。如果收到None,它将存储为''。要在您的视图中使用此逻辑,请将此类添加到form_overrides属性中:

class MyView(ModelView):
    form_overrides = {
        'my_field': StringField,
    }