mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-11-04 18:08:03 +03:00 
			
		
		
		
	Only HTML forms should have implicit default False for boolean fields
This commit is contained in:
		
							parent
							
								
									34d65119fc
								
							
						
					
					
						commit
						28ff6fb1ec
					
				| 
						 | 
				
			
			@ -16,6 +16,7 @@ from django.core import validators
 | 
			
		|||
from django.core.exceptions import ValidationError
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
from django.db.models.fields import BLANK_CHOICE_DASH
 | 
			
		||||
from django.http import QueryDict
 | 
			
		||||
from django.forms import widgets
 | 
			
		||||
from django.utils.encoding import is_protected_type
 | 
			
		||||
from django.utils.translation import ugettext_lazy as _
 | 
			
		||||
| 
						 | 
				
			
			@ -399,10 +400,15 @@ class BooleanField(WritableField):
 | 
			
		|||
    }
 | 
			
		||||
    empty = False
 | 
			
		||||
 | 
			
		||||
    # Note: we set default to `False` in order to fill in missing value not
 | 
			
		||||
    # supplied by html form.  TODO: Fix so that only html form input gets
 | 
			
		||||
    # this behavior.
 | 
			
		||||
    default = False
 | 
			
		||||
    def field_from_native(self, data, files, field_name, into):
 | 
			
		||||
        # HTML checkboxes do not explicitly represent unchecked as `False`
 | 
			
		||||
        # we deal with that here...
 | 
			
		||||
        if isinstance(data, QueryDict):
 | 
			
		||||
            self.default = False
 | 
			
		||||
 | 
			
		||||
        return super(BooleanField, self).field_from_native(
 | 
			
		||||
            data, files, field_name, into
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def from_native(self, value):
 | 
			
		||||
        if value in ('true', 't', 'True', '1'):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user