Commit a5d1bf79 authored by Paul Brown's avatar Paul Brown Committed by GitHub

Merge pull request #1417 from jammie987/peewee_json_field

Added JSON and JSONB and support for peewee postgresql backend
parents 6e5757d1 43971217
...@@ -12,6 +12,11 @@ from flask_admin.model.fields import InlineModelFormField, InlineFieldList, Ajax ...@@ -12,6 +12,11 @@ from flask_admin.model.fields import InlineModelFormField, InlineFieldList, Ajax
from .tools import get_primary_key, get_meta_fields from .tools import get_primary_key, get_meta_fields
from .ajax import create_ajax_loader from .ajax import create_ajax_loader
try:
from playhouse.postgres_ext import JSONField, BinaryJSONField
pg_ext = True
except:
pg_ext = False
class InlineModelFormList(InlineFieldList): class InlineModelFormList(InlineFieldList):
...@@ -106,6 +111,10 @@ class CustomModelConverter(ModelConverter): ...@@ -106,6 +111,10 @@ class CustomModelConverter(ModelConverter):
self.converters[DateField] = self.handle_date self.converters[DateField] = self.handle_date
self.converters[TimeField] = self.handle_time self.converters[TimeField] = self.handle_time
if pg_ext:
self.converters[JSONField] = self.handle_json
self.converters[BinaryJSONField] = self.handle_json
self.overrides = getattr(self.view, 'form_overrides', None) or {} self.overrides = getattr(self.view, 'form_overrides', None) or {}
def handle_foreign_key(self, model, field, **kwargs): def handle_foreign_key(self, model, field, **kwargs):
...@@ -134,6 +143,9 @@ class CustomModelConverter(ModelConverter): ...@@ -134,6 +143,9 @@ class CustomModelConverter(ModelConverter):
def handle_time(self, model, field, **kwargs): def handle_time(self, model, field, **kwargs):
return field.name, form.TimeField(**kwargs) return field.name, form.TimeField(**kwargs)
def handle_json(self, model, field, **kwargs):
return field.name, form.JSONField(**kwargs)
def get_form(model, converter, def get_form(model, converter,
base_class=form.BaseForm, base_class=form.BaseForm,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment