mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-10-30 23:47:55 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from cookbook.ingredients.models import Category, Ingredient
 | |
| from graphene import ObjectType, relay
 | |
| from graphene.contrib.django.filter import DjangoFilterConnectionField
 | |
| from graphene.contrib.django.types import DjangoNode
 | |
| 
 | |
| 
 | |
| # Graphene will automatically map the User model's fields onto the UserType.
 | |
| # This is configured in the UserType's Meta class (as you can see below)
 | |
| class CategoryNode(DjangoNode):
 | |
| 
 | |
|     class Meta:
 | |
|         model = Category
 | |
|         filter_fields = ['name', 'ingredients']
 | |
|         filter_order_by = ['name']
 | |
| 
 | |
| 
 | |
| class IngredientNode(DjangoNode):
 | |
| 
 | |
|     class Meta:
 | |
|         model = Ingredient
 | |
|         # Allow for some more advanced filtering here
 | |
|         filter_fields = {
 | |
|             'name': ['exact', 'icontains', 'istartswith'],
 | |
|             'notes': ['exact', 'icontains'],
 | |
|             'category': ['exact'],
 | |
|             'category__name': ['exact'],
 | |
|         }
 | |
|         filter_order_by = ['name', 'category__name']
 | |
| 
 | |
| 
 | |
| class Query(ObjectType):
 | |
|     category = relay.NodeField(CategoryNode)
 | |
|     all_categories = DjangoFilterConnectionField(CategoryNode)
 | |
| 
 | |
|     ingredient = relay.NodeField(IngredientNode)
 | |
|     all_ingredients = DjangoFilterConnectionField(IngredientNode)
 | |
| 
 | |
|     class Meta:
 | |
|         abstract = True
 |