Exemple #1
0
class ListOrItemField(Field):
    """
    A field whose values are either a value or lists of values described by the given item field.
    The item field can be another field type (e.g., CharField) or a serializer.
    """
    def __init__(self, child, *args, **kwargs):
        super(ListOrItemField, self).__init__(*args, **kwargs)
        self.item_field = child
        self.list_field = ListField(child=child, *args, **kwargs)

    def to_representation(self, obj):
        if isinstance(obj, list):
            return self.list_field.to_representation(obj)
        return self.item_field.to_representation(obj)

    def to_internal_value(self, data):
        if isinstance(data, list):
            return self.list_field.to_internal_value(data)
        # Force field validation. Not necessary on the list_field since DRF calls it recursively.
        self.item_field.run_validation(data)
        return self.item_field.to_internal_value(data)
class ListOrItemField(Field):
    """
    A field whose values are either a value or lists of values described by the given item field.
    The item field can be another field type (e.g., CharField) or a serializer.
    """

    def __init__(self, child, *args, **kwargs):
        super(ListOrItemField, self).__init__(*args, **kwargs)
        self.item_field = child
        self.list_field = ListField(child=child, *args, **kwargs)

    def to_representation(self, obj):
        if isinstance(obj, list):
            return self.list_field.to_representation(obj)
        return self.item_field.to_representation(obj)

    def to_internal_value(self, data):
        if isinstance(data, list):
            return self.list_field.to_internal_value(data)
        # Force field validation. Not necessary on the list_field since DRF calls it recursively.
        self.item_field.run_validation(data)
        return self.item_field.to_internal_value(data)