2015-12-04 6 views
6

Ich benutze Flask-Admin 2.1 mit Python 2.7.6.Wie vermeide ich Flask-Admin 2.1 Warnung "UserWarning: Felder fehlen in Regelsatz"?

Eine meiner Flask-Admin-Modellklassen erbt von flask.ext.admin.contrib.sqla.ModelView und überschreibt form_rules. "UserWarning: Fields missing from ruleset"

Die Warnung ist genau:

Wenn ich meine Bewerbung ausführen, wird diese Warnung angezeigt Es in meinem Modell sind Felder, die im Regelsatz nicht enthalten sind. Aber das ist Absicht. Ich möchte nicht, dass diese Felder angezeigt werden, wenn Benutzer Instanzen dieses Modells erstellen oder bearbeiten.

Ich habe schon gelesen das: https://github.com/flask-admin/flask-admin/pull/815#issuecomment-81963865

Wie kann ich die Warnung unterdrücken?

+2

Hier ist, warum eine Warnung gibt es - wenn das Feld ist in einem nicht Regelsatz, aber im Formular wird WTForms _always_ immer den Wert löschen, den es vorher gab. So funktionieren Browser - wenn der Wert nicht gesendet wurde, ist er leer. Wenn Sie also nicht möchten, dass ein Feld in einem Formular vorhanden ist, entfernen Sie es aus dem Formular. Wenn du es aus irgendeinem Grund in der Form haben willst, aber es nicht zeigen willst - mach es versteckt. – Joes

Antwort

9

Sie können die Warnung unterdrücken, wenn die Ansicht, indem Sie diesen Schnipsel mit dem angenommenen Namen Userview hinzugefügt:

import warnings 

with warnings.catch_warnings(): 
    warnings.filterwarnings('ignore', 'Fields missing from ruleset', UserWarning) 
    admin.add_view(UserView()) 

Referenz: https://docs.python.org/2/library/warnings.html#warnings.filterwarnings

+2

Große Antwort! Ich habe es etwas verfeinert, um nur die bestimmte Warnung zu erfassen, um die ich mich sorgte, indem ich warning.simplefilter ('ignore') in warnings.filterwarnings änderte ('ignore', 'Felder fehlen in Regelsatz'). –

+0

Großartig! Ich habe meine Antwort bearbeitet, um dies zu reflektieren. – mikl