mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-02 19:40:13 +03:00
Merge 151fcb1ae9
into afc9e9e038
This commit is contained in:
commit
43e9be0587
|
@ -25,13 +25,13 @@ def strict_positive_int(integer_string, cutoff=None):
|
|||
ret = min(ret, cutoff)
|
||||
return ret
|
||||
|
||||
def get_object_or_404(queryset, **filter_kwargs):
|
||||
def get_object_or_404(queryset, *filter_args, **filter_kwargs):
|
||||
"""
|
||||
Same as Django's standard shortcut, but make sure to raise 404
|
||||
if the filter_kwargs don't match the required types.
|
||||
"""
|
||||
try:
|
||||
return _get_object_or_404(queryset, **filter_kwargs)
|
||||
return _get_object_or_404(queryset, *filter_args, **filter_kwargs)
|
||||
except (TypeError, ValueError):
|
||||
raise Http404
|
||||
|
||||
|
|
|
@ -555,6 +555,7 @@ class ModelSerializerOptions(SerializerOptions):
|
|||
super(ModelSerializerOptions, self).__init__(meta)
|
||||
self.model = getattr(meta, 'model', None)
|
||||
self.read_only_fields = getattr(meta, 'read_only_fields', ())
|
||||
self.property_fields = getattr(meta, 'property_fields', ())
|
||||
|
||||
|
||||
class ModelSerializer(Serializer):
|
||||
|
@ -702,6 +703,10 @@ class ModelSerializer(Serializer):
|
|||
(field_name, self.__class__.__name__)
|
||||
ret[field_name].read_only = True
|
||||
|
||||
# For each of the `property_fields` construct a field
|
||||
for property_name in self.opts.property_fields:
|
||||
ret[property_name] = self.get_property_field(property_name)
|
||||
|
||||
return ret
|
||||
|
||||
def get_pk_field(self, model_field):
|
||||
|
@ -742,6 +747,9 @@ class ModelSerializer(Serializer):
|
|||
|
||||
return PrimaryKeyRelatedField(**kwargs)
|
||||
|
||||
def get_property_field(self, model_property):
|
||||
return CharField(read_only=True, source=model_property)
|
||||
|
||||
def get_field(self, model_field):
|
||||
"""
|
||||
Creates a default instance of a basic non-relational field.
|
||||
|
|
Loading…
Reference in New Issue
Block a user