Tastypie + Django: How to filter on sub-documents?

316 views Asked by At

I am trying to implement filtering in one of my data APIs built on Django(non-rel, mongodb-engine) + Tastypie(non-rel). I want to implement filtering on a sub-document inside my main document. The main documents in mongo looks like

{"user_name": "abc", "email": "[email protected]", "safety" :{"intra": True, "inter": False, "external": ['a', 'b']}}

The sub-document contains 2 boolean fields and list field. In mongo I can easily query on sub-documents and their fields however I am not able to implement it at the API level.The django model looks like this

from djangotoolbox.fields import DictField, EmbeddedModelField
class UserSafety(models.Model):
   user_name = models.CharField()
   email = models.EmailField()
   safety = DictField()   <------- What to use here!

The corresponding Tasty-pie resource looks like

 from tastypie_nonrel.fields import DictField, EmbeddedModelField
 class UserSafetyResource(ModelResource):
    user_name = field.CharField(attribute='user_name')
    email = fields.CharField(attribute='email')
    safety = DictField(attribute='safety')   <----What to use here!

    # This part i want to add
    class Meta:
       filtering = ['safety.intra': ALL, 'safety.inter': ALL]

Eventually I would like it to work this like in an HTTP request

GET http://<server>/my_endpoint/usersafety?safety.intra=true

Any ideas how this can be achieved? May be using either the embedded type fields?

0

There are 0 answers