mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-15 18:52:27 +03:00
Add null related field option
This commit is contained in:
parent
733f03fba3
commit
ac2720afcb
|
@ -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):
|
||||||
|
|
||||||
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):
|
||||||
# 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):
|
||||||
# .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)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user