mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-02-27 09:00:39 +03:00
django-filter: resolve field along with lookup expression to pro… (#805)
* django-filter: resolve field along with lookup expression to properly resolve field * bring back django-filter with method test * remove dangling comment * refactor based on better knowledge of django-filters
This commit is contained in:
parent
e51e60209a
commit
3ce44908c9
|
@ -1,5 +1,6 @@
|
||||||
import six
|
import six
|
||||||
|
|
||||||
|
from django_filters.utils import get_model_field
|
||||||
from .filterset import custom_filterset_factory, setup_filterset
|
from .filterset import custom_filterset_factory, setup_filterset
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,22 +19,12 @@ def get_filtering_args_from_filterset(filterset_class, type):
|
||||||
if name in filterset_class.declared_filters:
|
if name in filterset_class.declared_filters:
|
||||||
form_field = filter_field.field
|
form_field = filter_field.field
|
||||||
else:
|
else:
|
||||||
try:
|
model_field = get_model_field(model, filter_field.field_name)
|
||||||
field_name, filter_type = name.rsplit("__", 1)
|
filter_type = filter_field.lookup_expr
|
||||||
except ValueError:
|
if filter_type != "isnull" and hasattr(model_field, "formfield"):
|
||||||
field_name = name
|
form_field = model_field.formfield(
|
||||||
filter_type = None
|
required=filter_field.extra.get("required", False)
|
||||||
|
)
|
||||||
# If the filter type is `isnull` then use the filter provided by
|
|
||||||
# DjangoFilter (a BooleanFilter).
|
|
||||||
# Otherwise try and get a filter based on the actual model field
|
|
||||||
if filter_type != "isnull" and hasattr(model, field_name):
|
|
||||||
model_field = model._meta.get_field(field_name)
|
|
||||||
|
|
||||||
if hasattr(model_field, "formfield"):
|
|
||||||
form_field = model_field.formfield(
|
|
||||||
required=filter_field.extra.get("required", False)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Fallback to field defined on filter if we can't get it from the
|
# Fallback to field defined on filter if we can't get it from the
|
||||||
# model field
|
# model field
|
||||||
|
|
Loading…
Reference in New Issue
Block a user