mirror of
				https://github.com/graphql-python/graphene-django.git
				synced 2025-11-04 09:57:53 +03:00 
			
		
		
		
	Convert MultipleChoiceField to List of type String (#611)
This commit is contained in:
		
							parent
							
								
									f33223daa7
								
							
						
					
					
						commit
						82d8dbc893
					
				| 
						 | 
				
			
			@ -123,6 +123,15 @@ create your own ``FilterSet``. You can pass it directly as follows:
 | 
			
		|||
    class AnimalFilter(django_filters.FilterSet):
 | 
			
		||||
        # Do case-insensitive lookups on 'name'
 | 
			
		||||
        name = django_filters.CharFilter(lookup_expr=['iexact'])
 | 
			
		||||
        # Allow multiple genera to be selected at once
 | 
			
		||||
        genera = django_filters.MultipleChoiceFilter(
 | 
			
		||||
            field_name='genus',
 | 
			
		||||
            choices=(
 | 
			
		||||
                ('Canis', 'Canis'),
 | 
			
		||||
                ('Panthera', 'Panthera'),
 | 
			
		||||
                ('Seahorse', 'Seahorse')
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        class Meta:
 | 
			
		||||
            model = Animal
 | 
			
		||||
| 
						 | 
				
			
			@ -135,6 +144,22 @@ create your own ``FilterSet``. You can pass it directly as follows:
 | 
			
		|||
        all_animals = DjangoFilterConnectionField(AnimalNode,
 | 
			
		||||
                                                  filterset_class=AnimalFilter)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
If you were interested in selecting all dogs and cats, you might query as follows:
 | 
			
		||||
 | 
			
		||||
.. code::
 | 
			
		||||
 | 
			
		||||
    query {
 | 
			
		||||
      allAnimals(genera: ["Canis", "Panthera"]) {
 | 
			
		||||
        edges {
 | 
			
		||||
          node {
 | 
			
		||||
            id,
 | 
			
		||||
            name
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
You can also specify the ``FilterSet`` class using the ``filterset_class``
 | 
			
		||||
parameter when defining your ``DjangoObjectType``, however, this can't be used
 | 
			
		||||
in unison  with the ``filter_fields`` parameter:
 | 
			
		||||
| 
						 | 
				
			
			@ -162,6 +187,7 @@ in unison  with the ``filter_fields`` parameter:
 | 
			
		|||
        animal = relay.Node.Field(AnimalNode)
 | 
			
		||||
        all_animals = DjangoFilterConnectionField(AnimalNode)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
The context argument is passed on as the `request argument <http://django-filter.readthedocs.io/en/master/guide/usage.html#request-based-filtering>`__
 | 
			
		||||
in a ``django_filters.FilterSet`` instance. You can use this to customize your
 | 
			
		||||
filters to be context-dependent. We could modify the ``AnimalFilter`` above to
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,9 +55,14 @@ def convert_form_field_to_float(field):
 | 
			
		|||
    return Float(description=field.help_text, required=field.required)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@convert_form_field.register(forms.MultipleChoiceField)
 | 
			
		||||
def convert_form_field_to_string_list(field):
 | 
			
		||||
    return List(String, description=field.help_text, required=field.required)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@convert_form_field.register(forms.ModelMultipleChoiceField)
 | 
			
		||||
@convert_form_field.register(GlobalIDMultipleChoiceField)
 | 
			
		||||
def convert_form_field_to_list(field):
 | 
			
		||||
def convert_form_field_to_id_list(field):
 | 
			
		||||
    return List(ID, required=field.required)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,6 +66,10 @@ def test_should_choice_convert_string():
 | 
			
		|||
    assert_conversion(forms.ChoiceField, String)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_should_multiple_choice_convert_list():
 | 
			
		||||
    assert_conversion(forms.MultipleChoiceField, List)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_should_base_field_convert_string():
 | 
			
		||||
    assert_conversion(forms.Field, String)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user