diff options
| author | tom christie tom@tomchristie.com | 2011-02-19 17:55:32 +0000 | 
|---|---|---|
| committer | tom christie tom@tomchristie.com | 2011-02-19 17:55:32 +0000 | 
| commit | 67c48f758f3a3aa435e4f2ccf41764ae596447fb (patch) | |
| tree | ee59df28bf6fe2a5bfcb84ce2a26ac7c0a9b9db5 /djangorestframework/modelresource.py | |
| parent | 38c6a37af7cd006b05a08318aa34f6aacf03b4aa (diff) | |
| download | django-rest-framework-67c48f758f3a3aa435e4f2ccf41764ae596447fb.tar.bz2 | |
Fix kwargs in url conf to be more consistent, also fixes broken blog posts example (every blog post showed all comments)
Diffstat (limited to 'djangorestframework/modelresource.py')
| -rw-r--r-- | djangorestframework/modelresource.py | 15 | 
1 files changed, 12 insertions, 3 deletions
| diff --git a/djangorestframework/modelresource.py b/djangorestframework/modelresource.py index 0123e77a..0b06dacb 100644 --- a/djangorestframework/modelresource.py +++ b/djangorestframework/modelresource.py @@ -1,6 +1,7 @@  from django.forms import ModelForm -from django.db.models.query import QuerySet  from django.db.models import Model +from django.db.models.query import QuerySet +from django.db.models.fields.related import RelatedField  from djangorestframework.response import Response, ResponseException  from djangorestframework.resource import Resource @@ -340,6 +341,13 @@ class ModelResource(Resource, ModelFormValidatorMixin):      def post(self, request, auth, content, *args, **kwargs):          # TODO: test creation on a non-existing resource url +         +        # translated related_field into related_field_id +        for related_name in [field.name for field in self.model._meta.fields if isinstance(field, RelatedField)]: +            if kwargs.has_key(related_name): +                kwargs[related_name + '_id'] = kwargs[related_name] +                del kwargs[related_name] +          all_kw_args = dict(content.items() + kwargs.items())          if args:              instance = self.model(pk=args[-1], **all_kw_args) @@ -373,6 +381,7 @@ class ModelResource(Resource, ModelFormValidatorMixin):              else:                  # Otherwise assume the kwargs uniquely identify the model                  instance = self.model.objects.get(**kwargs) +              for (key, val) in content.items():                  setattr(instance, key, val)          except self.model.DoesNotExist: @@ -404,7 +413,7 @@ class RootModelResource(ModelResource):      def get(self, request, auth, *args, **kwargs):          queryset = self.queryset if self.queryset else self.model.objects.all() -        return queryset +        return queryset.filter(**kwargs)  class QueryModelResource(ModelResource): @@ -418,5 +427,5 @@ class QueryModelResource(ModelResource):      def get(self, request, auth, *args, **kwargs):          queryset = self.queryset if self.queryset else self.model.objects.all() -        return queryset +        return queryset.filer(**kwargs) | 
