Как я могу переопределить тип поля DjangoModelFormMutation в графене?

Чтобы добавить к ответу Джо Кингтона (недостаточно репутации для комментария), есть хороший пример смешивания 2d и 3d графиков в документации по http://matplotlib.org/examples/mplot3d/mixed_subplots_demo. html , который показывает проекцию = '3d', работающую в сочетании с импортом Axes3D.

from mpl_toolkits.mplot3d import Axes3D
...
ax = fig.add_subplot(2, 1, 1)
...
ax = fig.add_subplot(2, 1, 2, projection='3d')

Фактически, пока присутствует импорт Axes3D, строка

from mpl_toolkits.mplot3d import Axes3D
...
ax = fig.gca(projection='3d')

, который используется OP также работает. (проверено с помощью matplotlib версии 1.3.1)

2
задан Eli 17 March 2019 в 23:50
поделиться

1 ответ

Я придумал решение, которое работает, но не красиво. Я использовал пакет https://github.com/hzdg/django-enumfields , чтобы помочь с этим.

Я создал свое собственное поле формы:

class EnumChoiceField(enumfields.forms.EnumChoiceField):
    def __init__(self, enum, *, coerce=lambda val: val, empty_value='', **kwargs):
        if isinstance(enum, six.string_types):
            self.enum = import_string(enum)
        else:
            self.enum = enum

        super().__init__(coerce=coerce, empty_value=empty_value, **kwargs)

И использовал его в моей форме Django. Затем в моем собственном AppConfig я сделал это:

class CoreAppConfig(AppConfig):
    name = 'myapp.core'

    def ready(self):
        registry = get_global_registry()

        @convert_form_field.register(EnumChoiceField)
        def convert_form_field_to_enum(field: EnumChoiceField):
            converted = registry.get_converted_field(field.enum)
            if converted is None:
                raise ImproperlyConfigured("Enum %r is not registered." % field.enum)
            return converted(description=field.help_text, required=field.required)

И, наконец, в моей схеме:

UnitEnum = Enum.from_enum(Unit)
get_global_registry().register_converted_field(Unit, UnitEnum)

Мне действительно это не нравится, но я не мог придумать лучшего способа чтобы справиться с этим. Я столкнулся с этой идеей при поиске другой проблемы с графеновым джанго здесь https://github.com/graphql-python/graphene-django/issues/481#issuecomment-412227036 .

Я чувствую, что у есть , чтобы быть лучшим способом сделать это.

0
ответ дан Eli 17 March 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: