Flask-Admin хранит NULL в базе данных вместо пустой строки ('') - PullRequest
0 голосов
/ 14 декабря 2018

Название говорит само за себя.Я использую 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 голосов
/ 20 декабря 2018

Чтобы переопределить это поведение, вы можете создать новый класс поля:

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,
    }
...