mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-01-31 03:34:13 +03:00
Merge pull request #663 from robertpro/fix-o2o-relation
Fix o2o relation
This commit is contained in:
commit
ab551f4a15
|
@ -50,9 +50,7 @@ def test_should_query_field():
|
|||
"""
|
||||
expected = {
|
||||
"reporter": {"lastName": "ABA"},
|
||||
"_debug": {
|
||||
"sql": [{"rawSql": str(Reporter.objects.order_by("pk")[:1].query)}]
|
||||
},
|
||||
"_debug": {"sql": [{"rawSql": str(Reporter.objects.order_by("pk")[:1].query)}]},
|
||||
}
|
||||
schema = graphene.Schema(query=Query)
|
||||
result = schema.execute(
|
||||
|
|
|
@ -226,6 +226,62 @@ def test_should_node():
|
|||
assert result.data == expected
|
||||
|
||||
|
||||
def test_should_query_onetoone_fields():
|
||||
film = Film(id=1)
|
||||
film_details = FilmDetails(id=1, film=film)
|
||||
|
||||
class FilmNode(DjangoObjectType):
|
||||
class Meta:
|
||||
model = Film
|
||||
interfaces = (Node,)
|
||||
|
||||
class FilmDetailsNode(DjangoObjectType):
|
||||
class Meta:
|
||||
model = FilmDetails
|
||||
interfaces = (Node,)
|
||||
|
||||
class Query(graphene.ObjectType):
|
||||
film = graphene.Field(FilmNode)
|
||||
film_details = graphene.Field(FilmDetailsNode)
|
||||
|
||||
def resolve_film(root, info):
|
||||
return film
|
||||
|
||||
def resolve_film_details(root, info):
|
||||
return film_details
|
||||
|
||||
query = """
|
||||
query FilmQuery {
|
||||
filmDetails {
|
||||
id
|
||||
film {
|
||||
id
|
||||
}
|
||||
}
|
||||
film {
|
||||
id
|
||||
details {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
expected = {
|
||||
"filmDetails": {
|
||||
"id": "RmlsbURldGFpbHNOb2RlOjE=",
|
||||
"film": {"id": "RmlsbU5vZGU6MQ=="},
|
||||
},
|
||||
"film": {
|
||||
"id": "RmlsbU5vZGU6MQ==",
|
||||
"details": {"id": "RmlsbURldGFpbHNOb2RlOjE="},
|
||||
},
|
||||
}
|
||||
schema = graphene.Schema(query=Query)
|
||||
result = schema.execute(query)
|
||||
assert not result.errors
|
||||
assert result.data == expected
|
||||
|
||||
|
||||
def test_should_query_connectionfields():
|
||||
class ReporterType(DjangoObjectType):
|
||||
class Meta:
|
||||
|
|
|
@ -18,7 +18,8 @@ def get_reverse_fields(model, local_field_names):
|
|||
if name in local_field_names:
|
||||
continue
|
||||
|
||||
related = getattr(attr, "rel", None)
|
||||
# "rel" for FK and M2M relations and "related" for O2O Relations
|
||||
related = getattr(attr, "rel", None) or getattr(attr, "related", None)
|
||||
if isinstance(related, models.ManyToOneRel):
|
||||
yield (name, related)
|
||||
elif isinstance(related, models.ManyToManyRel) and not related.symmetrical:
|
||||
|
|
Loading…
Reference in New Issue
Block a user