[PYTHON] Unterdrücktes "Feld darf nicht null sein." Wird in Feldern angezeigt, die nicht null sind und in der DB-Definition standardmäßig mit Verbindung und Marshmallow-SQLalchemie verwendet werden.

Es hat vorerst funktioniert! Aber es scheint einen besseren Weg zu geben.

Umgebung

requirement.txt


#Auszug
connexion==2.7.0
marshmallow-sqlalchemy==0.23.1
marshmallow==3.7.1
sqlalchemy==1.3.18
flask-marshmallow==0.13.0
flask-migrate==2.5.3
flask-sqlalchemy==2.4.4
flask==1.1.2

Spalte in Frage

model.py


hoge_date = db.Column(db.Date(), nullable=False, default=date.fromisoformat('2099-12-31'))

Fehlerinhalt

console.log


marshmallow.exceptions.ValidationError: {'hoge_date': ['Field may not be null.']}

Bewältigung

schema.py


class HogeSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = Hoge

    #Füge das hinzu
    @pre_load
    def remove_has_defalt_key_if_none(self, in_data: dict, **kwargs):
        if in_data.get('hoge_date') is None:
            in_data.pop('hoge_date', None)
        return in_data

Recommended Posts

Unterdrücktes "Feld darf nicht null sein." Wird in Feldern angezeigt, die nicht null sind und in der DB-Definition standardmäßig mit Verbindung und Marshmallow-SQLalchemie verwendet werden.
Laden Sie Pakete, die sich nicht in Conda befinden, auf anaconda.org hoch und verwalten Sie sie