mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-11-04 01:47:59 +03:00 
			
		
		
		
	#467 Added label and help_text to Field
This commit is contained in:
		
							parent
							
								
									3e3ede71d2
								
							
						
					
					
						commit
						9ae0ca1cae
					
				| 
						 | 
					@ -28,7 +28,7 @@ def is_simple_callable(obj):
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        (inspect.isfunction(obj) and not inspect.getargspec(obj)[0]) or
 | 
					        (inspect.isfunction(obj) and not inspect.getargspec(obj)[0]) or
 | 
				
			||||||
        (inspect.ismethod(obj) and len(inspect.getargspec(obj)[0]) <= 1)
 | 
					        (inspect.ismethod(obj) and len(inspect.getargspec(obj)[0]) <= 1)
 | 
				
			||||||
    )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Field(object):
 | 
					class Field(object):
 | 
				
			||||||
| 
						 | 
					@ -38,13 +38,15 @@ class Field(object):
 | 
				
			||||||
    _use_files = None
 | 
					    _use_files = None
 | 
				
			||||||
    form_field_class = forms.CharField
 | 
					    form_field_class = forms.CharField
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, source=None):
 | 
					    def __init__(self, source=None, label=None, help_text=None):
 | 
				
			||||||
        self.parent = None
 | 
					        self.parent = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.creation_counter = Field.creation_counter
 | 
					        self.creation_counter = Field.creation_counter
 | 
				
			||||||
        Field.creation_counter += 1
 | 
					        Field.creation_counter += 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.source = source
 | 
					        self.source = source
 | 
				
			||||||
 | 
					        self.label = label
 | 
				
			||||||
 | 
					        self.help_text = help_text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def initialize(self, parent, field_name):
 | 
					    def initialize(self, parent, field_name):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
| 
						 | 
					@ -123,11 +125,11 @@ class WritableField(Field):
 | 
				
			||||||
    widget = widgets.TextInput
 | 
					    widget = widgets.TextInput
 | 
				
			||||||
    default = None
 | 
					    default = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, source=None, read_only=False, required=None,
 | 
					    def __init__(self, source=None, label=None, help_text=None,
 | 
				
			||||||
 | 
					                 read_only=False, required=None,
 | 
				
			||||||
                 validators=[], error_messages=None, widget=None,
 | 
					                 validators=[], error_messages=None, widget=None,
 | 
				
			||||||
                 default=None, blank=None):
 | 
					                 default=None, blank=None):
 | 
				
			||||||
 | 
					        super(WritableField, self).__init__(source=source, label=label, help_text=help_text)
 | 
				
			||||||
        super(WritableField, self).__init__(source=source)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.read_only = read_only
 | 
					        self.read_only = read_only
 | 
				
			||||||
        if required is None:
 | 
					        if required is None:
 | 
				
			||||||
| 
						 | 
					@ -215,6 +217,7 @@ class ModelField(WritableField):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    A generic field that can be used against an arbitrary model field.
 | 
					    A generic field that can be used against an arbitrary model field.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, *args, **kwargs):
 | 
					    def __init__(self, *args, **kwargs):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            self.model_field = kwargs.pop('model_field')
 | 
					            self.model_field = kwargs.pop('model_field')
 | 
				
			||||||
| 
						 | 
					@ -222,9 +225,9 @@ class ModelField(WritableField):
 | 
				
			||||||
            raise ValueError("ModelField requires 'model_field' kwarg")
 | 
					            raise ValueError("ModelField requires 'model_field' kwarg")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.min_length = kwargs.pop('min_length',
 | 
					        self.min_length = kwargs.pop('min_length',
 | 
				
			||||||
                            getattr(self.model_field, 'min_length', None))
 | 
					            getattr(self.model_field, 'min_length', None))
 | 
				
			||||||
        self.max_length = kwargs.pop('max_length',
 | 
					        self.max_length = kwargs.pop('max_length',
 | 
				
			||||||
                            getattr(self.model_field, 'max_length', None))
 | 
					            getattr(self.model_field, 'max_length', None))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        super(ModelField, self).__init__(*args, **kwargs)
 | 
					        super(ModelField, self).__init__(*args, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -434,7 +437,7 @@ class PrimaryKeyRelatedField(RelatedField):
 | 
				
			||||||
            # RelatedObject (reverse relationship)
 | 
					            # RelatedObject (reverse relationship)
 | 
				
			||||||
            obj = getattr(obj, self.source or field_name)
 | 
					            obj = getattr(obj, self.source or field_name)
 | 
				
			||||||
            return self.to_native(obj.pk)
 | 
					            return self.to_native(obj.pk)
 | 
				
			||||||
        # Forward relationship
 | 
					            # Forward relationship
 | 
				
			||||||
        return self.to_native(pk)
 | 
					        return self.to_native(pk)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -469,7 +472,7 @@ class ManyPrimaryKeyRelatedField(ManyRelatedField):
 | 
				
			||||||
            # RelatedManager (reverse relationship)
 | 
					            # RelatedManager (reverse relationship)
 | 
				
			||||||
            queryset = getattr(obj, self.source or field_name)
 | 
					            queryset = getattr(obj, self.source or field_name)
 | 
				
			||||||
            return [self.to_native(item.pk) for item in queryset.all()]
 | 
					            return [self.to_native(item.pk) for item in queryset.all()]
 | 
				
			||||||
        # Forward relationship
 | 
					            # Forward relationship
 | 
				
			||||||
        return [self.to_native(item.pk) for item in queryset.all()]
 | 
					        return [self.to_native(item.pk) for item in queryset.all()]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def from_native(self, data):
 | 
					    def from_native(self, data):
 | 
				
			||||||
| 
						 | 
					@ -913,7 +916,7 @@ class DateTimeField(WritableField):
 | 
				
			||||||
                # call stack.
 | 
					                # call stack.
 | 
				
			||||||
                warnings.warn(u"DateTimeField received a naive datetime (%s)"
 | 
					                warnings.warn(u"DateTimeField received a naive datetime (%s)"
 | 
				
			||||||
                              u" while time zone support is active." % value,
 | 
					                              u" while time zone support is active." % value,
 | 
				
			||||||
                              RuntimeWarning)
 | 
					                    RuntimeWarning)
 | 
				
			||||||
                default_timezone = timezone.get_default_timezone()
 | 
					                default_timezone = timezone.get_default_timezone()
 | 
				
			||||||
                value = timezone.make_aware(value, default_timezone)
 | 
					                value = timezone.make_aware(value, default_timezone)
 | 
				
			||||||
            return value
 | 
					            return value
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -428,6 +428,12 @@ class ModelSerializer(Serializer):
 | 
				
			||||||
        if max_length:
 | 
					        if max_length:
 | 
				
			||||||
            kwargs['max_length'] = max_length
 | 
					            kwargs['max_length'] = max_length
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if model_field.verbose_name:
 | 
				
			||||||
 | 
					            kwargs['label'] = model_field.verbose_name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if model_field.help_text:
 | 
				
			||||||
 | 
					            kwargs['help_text'] = model_field.help_text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        field_mapping = {
 | 
					        field_mapping = {
 | 
				
			||||||
            models.FloatField: FloatField,
 | 
					            models.FloatField: FloatField,
 | 
				
			||||||
            models.IntegerField: IntegerField,
 | 
					            models.IntegerField: IntegerField,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user