mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-11-01 00:17:26 +03:00 
			
		
		
		
	Added default manager to connection resolver
This commit is contained in:
		
							parent
							
								
									29e5502e0e
								
							
						
					
					
						commit
						12c4485a43
					
				|  | @ -1,3 +1,5 @@ | ||||||
|  | from functools import partial | ||||||
|  | 
 | ||||||
| from django.db.models.query import QuerySet | from django.db.models.query import QuerySet | ||||||
| from graphene.relay import ConnectionField | from graphene.relay import ConnectionField | ||||||
| from graphql_relay.connection.arrayconnection import connection_from_list_slice | from graphql_relay.connection.arrayconnection import connection_from_list_slice | ||||||
|  | @ -12,7 +14,7 @@ class DjangoConnectionField(ConnectionField): | ||||||
| 
 | 
 | ||||||
|     @property |     @property | ||||||
|     def model(self): |     def model(self): | ||||||
|         return self.connection._meta.node._meta.model |         return self.type._meta.node._meta.model | ||||||
| 
 | 
 | ||||||
|     def get_manager(self): |     def get_manager(self): | ||||||
|         if self.on: |         if self.on: | ||||||
|  | @ -24,8 +26,10 @@ class DjangoConnectionField(ConnectionField): | ||||||
|         return getattr(root, self.source, self.get_manager()) |         return getattr(root, self.source, self.get_manager()) | ||||||
| 
 | 
 | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def connection_resolver(resolver, connection, root, args, context, info): |     def connection_resolver(resolver, connection, default_manager, root, args, context, info): | ||||||
|         iterable = resolver(root, args, context, info) |         iterable = resolver(root, args, context, info) | ||||||
|  |         if iterable is None: | ||||||
|  |             iterable = default_manager | ||||||
|         iterable = maybe_queryset(iterable) |         iterable = maybe_queryset(iterable) | ||||||
|         if isinstance(iterable, QuerySet): |         if isinstance(iterable, QuerySet): | ||||||
|             _len = iterable.count() |             _len = iterable.count() | ||||||
|  | @ -41,6 +45,9 @@ class DjangoConnectionField(ConnectionField): | ||||||
|             edge_type=connection.Edge, |             edge_type=connection.Edge, | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  |     def get_resolver(self, parent_resolver): | ||||||
|  |         return partial(self.connection_resolver, parent_resolver, self.type, self.get_manager()) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| def get_connection_field(*args, **kwargs): | def get_connection_field(*args, **kwargs): | ||||||
|     if DJANGO_FILTER_INSTALLED: |     if DJANGO_FILTER_INSTALLED: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user