mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-07-13 17:52:19 +03:00
Create new fields and exclude options that are aliased to exclude_fields and only_fields
This commit is contained in:
parent
a2103c19f4
commit
64bc6c7c2e
|
@ -220,17 +220,61 @@ def test_django_objecttype_only_fields():
|
||||||
assert fields == ["id", "email", "films"]
|
assert fields == ["id", "email", "films"]
|
||||||
|
|
||||||
|
|
||||||
|
@with_local_registry
|
||||||
|
def test_django_objecttype_fields():
|
||||||
|
class Reporter(DjangoObjectType):
|
||||||
|
class Meta:
|
||||||
|
model = ReporterModel
|
||||||
|
fields = ("id", "email", "films")
|
||||||
|
|
||||||
|
fields = list(Reporter._meta.fields.keys())
|
||||||
|
assert fields == ["id", "email", "films"]
|
||||||
|
|
||||||
|
|
||||||
|
@with_local_registry
|
||||||
|
def test_django_objecttype_only_fields_and_fields():
|
||||||
|
with pytest.raises(Exception):
|
||||||
|
|
||||||
|
class Reporter(DjangoObjectType):
|
||||||
|
class Meta:
|
||||||
|
model = ReporterModel
|
||||||
|
only_fields = ("id", "email", "films")
|
||||||
|
fields = ("id", "email", "films")
|
||||||
|
|
||||||
|
|
||||||
@with_local_registry
|
@with_local_registry
|
||||||
def test_django_objecttype_exclude_fields():
|
def test_django_objecttype_exclude_fields():
|
||||||
class Reporter(DjangoObjectType):
|
class Reporter(DjangoObjectType):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ReporterModel
|
model = ReporterModel
|
||||||
exclude_fields = "email"
|
exclude_fields = ["email"]
|
||||||
|
|
||||||
fields = list(Reporter._meta.fields.keys())
|
fields = list(Reporter._meta.fields.keys())
|
||||||
assert "email" not in fields
|
assert "email" not in fields
|
||||||
|
|
||||||
|
|
||||||
|
@with_local_registry
|
||||||
|
def test_django_objecttype_exclude():
|
||||||
|
class Reporter(DjangoObjectType):
|
||||||
|
class Meta:
|
||||||
|
model = ReporterModel
|
||||||
|
exclude = ["email"]
|
||||||
|
|
||||||
|
fields = list(Reporter._meta.fields.keys())
|
||||||
|
assert "email" not in fields
|
||||||
|
|
||||||
|
|
||||||
|
@with_local_registry
|
||||||
|
def test_django_objecttype_exclude_fields_and_exclude():
|
||||||
|
with pytest.raises(Exception):
|
||||||
|
|
||||||
|
class Reporter(DjangoObjectType):
|
||||||
|
class Meta:
|
||||||
|
model = ReporterModel
|
||||||
|
exclude = ["email"]
|
||||||
|
exclude_fields = ["email"]
|
||||||
|
|
||||||
|
|
||||||
class TestDjangoObjectType:
|
class TestDjangoObjectType:
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def PetModel(self):
|
def PetModel(self):
|
||||||
|
|
|
@ -74,8 +74,10 @@ class DjangoObjectType(ObjectType):
|
||||||
model=None,
|
model=None,
|
||||||
registry=None,
|
registry=None,
|
||||||
skip_registry=False,
|
skip_registry=False,
|
||||||
only_fields=(),
|
only_fields=(), # deprecated in favour of `fields`
|
||||||
exclude_fields=(),
|
fields=(),
|
||||||
|
exclude_fields=(), # deprecated in favour of `exclude`
|
||||||
|
exclude=(),
|
||||||
filter_fields=None,
|
filter_fields=None,
|
||||||
filterset_class=None,
|
filterset_class=None,
|
||||||
connection=None,
|
connection=None,
|
||||||
|
@ -109,10 +111,20 @@ class DjangoObjectType(ObjectType):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Alias only_fields -> fields
|
||||||
|
if only_fields and fields:
|
||||||
|
raise Exception("Can't set both only_fields and fields")
|
||||||
|
if only_fields:
|
||||||
|
fields = only_fields
|
||||||
|
|
||||||
|
# Alias exclude_fields -> exclude
|
||||||
|
if exclude_fields and exclude:
|
||||||
|
raise Exception("Can't set both exclude_fields and exclude")
|
||||||
|
if exclude_fields:
|
||||||
|
exclude = exclude_fields
|
||||||
|
|
||||||
django_fields = yank_fields_from_attrs(
|
django_fields = yank_fields_from_attrs(
|
||||||
construct_fields(
|
construct_fields(model, registry, fields, exclude, convert_choices_to_enum),
|
||||||
model, registry, only_fields, exclude_fields, convert_choices_to_enum
|
|
||||||
),
|
|
||||||
_as=Field,
|
_as=Field,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user