Commit ac2720af by Tom Christie

Add null related field option

parent 733f03fb
...@@ -269,6 +269,7 @@ class RelatedField(WritableField): ...@@ -269,6 +269,7 @@ class RelatedField(WritableField):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.queryset = kwargs.pop('queryset', None) self.queryset = kwargs.pop('queryset', None)
self.null = kwargs.pop('null', False)
super(RelatedField, self).__init__(*args, **kwargs) super(RelatedField, self).__init__(*args, **kwargs)
self.read_only = kwargs.pop('read_only', self.default_read_only) self.read_only = kwargs.pop('read_only', self.default_read_only)
...@@ -351,9 +352,9 @@ class RelatedField(WritableField): ...@@ -351,9 +352,9 @@ class RelatedField(WritableField):
value = data.get(field_name) value = data.get(field_name)
if value in (None, '') and not self.blank: if value in (None, '') and not self.null:
raise ValidationError('Value may not be null') raise ValidationError('Value may not be null')
elif value in (None, '') and self.blank: elif value in (None, '') and self.null:
into[(self.source or field_name)] = None into[(self.source or field_name)] = None
else: else:
into[(self.source or field_name)] = self.from_native(value) into[(self.source or field_name)] = self.from_native(value)
......
...@@ -432,7 +432,7 @@ class ModelSerializer(Serializer): ...@@ -432,7 +432,7 @@ class ModelSerializer(Serializer):
# TODO: filter queryset using: # TODO: filter queryset using:
# .using(db).complex_filter(self.rel.limit_choices_to) # .using(db).complex_filter(self.rel.limit_choices_to)
kwargs = { kwargs = {
'blank': model_field.blank, 'null': model_field.null,
'queryset': model_field.rel.to._default_manager 'queryset': model_field.rel.to._default_manager
} }
...@@ -577,7 +577,7 @@ class HyperlinkedModelSerializer(ModelSerializer): ...@@ -577,7 +577,7 @@ class HyperlinkedModelSerializer(ModelSerializer):
# .using(db).complex_filter(self.rel.limit_choices_to) # .using(db).complex_filter(self.rel.limit_choices_to)
rel = model_field.rel.to rel = model_field.rel.to
kwargs = { kwargs = {
'blank': model_field.blank, 'null': model_field.null,
'queryset': rel._default_manager, 'queryset': rel._default_manager,
'view_name': self._get_default_view_name(rel) 'view_name': self._get_default_view_name(rel)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment