This commit is contained in:
Henry Clifford 2013-10-04 07:39:16 -07:00
commit 43e9be0587
2 changed files with 10 additions and 2 deletions

View File

@ -25,13 +25,13 @@ def strict_positive_int(integer_string, cutoff=None):
ret = min(ret, cutoff) ret = min(ret, cutoff)
return ret 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 Same as Django's standard shortcut, but make sure to raise 404
if the filter_kwargs don't match the required types. if the filter_kwargs don't match the required types.
""" """
try: try:
return _get_object_or_404(queryset, **filter_kwargs) return _get_object_or_404(queryset, *filter_args, **filter_kwargs)
except (TypeError, ValueError): except (TypeError, ValueError):
raise Http404 raise Http404

View File

@ -555,6 +555,7 @@ class ModelSerializerOptions(SerializerOptions):
super(ModelSerializerOptions, self).__init__(meta) super(ModelSerializerOptions, self).__init__(meta)
self.model = getattr(meta, 'model', None) self.model = getattr(meta, 'model', None)
self.read_only_fields = getattr(meta, 'read_only_fields', ()) self.read_only_fields = getattr(meta, 'read_only_fields', ())
self.property_fields = getattr(meta, 'property_fields', ())
class ModelSerializer(Serializer): class ModelSerializer(Serializer):
@ -702,6 +703,10 @@ class ModelSerializer(Serializer):
(field_name, self.__class__.__name__) (field_name, self.__class__.__name__)
ret[field_name].read_only = True 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 return ret
def get_pk_field(self, model_field): def get_pk_field(self, model_field):
@ -742,6 +747,9 @@ class ModelSerializer(Serializer):
return PrimaryKeyRelatedField(**kwargs) return PrimaryKeyRelatedField(**kwargs)
def get_property_field(self, model_property):
return CharField(read_only=True, source=model_property)
def get_field(self, model_field): def get_field(self, model_field):
""" """
Creates a default instance of a basic non-relational field. Creates a default instance of a basic non-relational field.