Tastypie QuerySet Client’s documentation

Note

Requirements::
Tastypie: Over the 0.9.12-alpha

Contents:

Usage

Client for Tastypie. Provide operation similar to the Django Model API.

Schema

# base schema
client = Client("http://api.server.com/your/v1/")
client.schema()

# model schema
client.your.schema()
client.message.schema()

Get

>>> client = Client("http://api.server.com/your/v1/")
>>> client.your.objects.get(name="your")
<your: {u"id": u"1", u"name": u"your", u"status": u"any"}>

Count

>>> client = Client("http://api.server.com/your/v1/")
>>> client.your.objects.count()
100

Exists

>>> client = Client("http://api.server.com/your/v1/")
>>> client.your.objects.exists()
True
>>> queryset = client.your.objects.all()
>>> queryset.exists()
True

Filter

>>> client = Client("http://api.server.com/your/v1/")
>>> client.your.objects.filter(name="your")
<QuerySet <class 'Response'> (3/3)>

Order By

>>> client = Client("http://api.server.com/your/v1/")
>>> order = []
>>> for p in client.your.objects.order_by("-id"):
.  .  .         order.append(p)
.  .  .         print p.your
.  .  .
<your: {u"id": u"3", u"name": u"name3"}>
<your: {u"id": u"2", u"name": u"name2"}>
<your: {u"id": u"1", u"name": u"name1"}>
>>> for i, k in zip(client.your.objects.order_by("-id"), order):
.  .  .         print i.id == k.id
.  .  .
True
True
True

Latest

>>> client = Client("http://api.server.com/your/v1/")
>>> latest = client.your.objects.latest("id")
>>> order = client.your.objects.order_by("-id")[0]
>>> latest.id == order.id
True

Relation

>>> client = Client("http://api.server.com/your/v1/")
>>> parent = client.parent.objects.filter(parent__your__name="name")
>>> parent
<QuerySet <class 'Response'> (2/2)>
>>> for p in parent:
.  .  .         print p.your
.  .  .
<your: {u"id": u"1", u"name": u"name", u"status": u"any"}>
<your: {u"id": u"2", u"name": u"name", u"status": u"any"}>

ManyToMany

>>> client = Client("http://api.server.com/your/v1/")
>>> parent = client.parent.objects.filter(id__in=[109, 110, 111])
>>> parent
<QuerySet <class 'Response'> (3/3)>
>>> for p in parent:
.  .  .         print p
.  .  .
<your: {u"id": u"109", u"name": u"name109", u"status": u"any"}>
<your: {u"id": u"110", u"name": u"name110", u"status": u"any"}>
<your: {u"id": u"111", u"name": u"name111", u"status": u"any"}>
>>> for p in parent:
.  .  .         print p.your
.  .  .
<ManyToManyManager object at 0x10a12e510>
<ManyToManyManager object at 0x10a12e510>
<ManyToManyManager object at 0x10a12e510>
>>> for p in parent:
.  .  .         print p.your.all()
.  .  .
<QuerySet <class 'Response'> (1/1)>
<QuerySet <class 'Response'> (10/10)>
<QuerySet <class 'Response'> (20/25)>

Save

>>> client = Client("http://api.server.com/your/v1/")
>>> your = client.your(name="name")
>>> your
<your: {u"name": u"name"}>
>>> your.save()  # save Your object.
>>> your
<your: {u"id": u"2", u"name": u"name"}>

Create

>>> client = Client("http://api.server.com/your/v1/")
>>> your = client.your.objects.create(name="name")
>>> your
<your: {u"id": u"2", u"name": u"name"}>

Get OR Create

Returns a tuple of (object, created)

>>> client = Client("http://api.server.com/your/v1/")
>>> client.your.objects.get_or_create(name="name")
(<your: {u"id": u"2", u"name": u"name"}>, True)
>>> client.your.objects.get_or_create(name="name")
(<your: {u"id": u"2", u"name": u"name"}>, False)

Field

>>> client = Client("http://api.server.com/your/v1/")
>>> your = client.your
>>> your
<your: /your/v1/your/>
>>> you = your(name="your")
>>> you.bankcode = 4649
<your: /your/v1/your/ {'name': 'your', 'bankcode': 4649}>
>>> you.name
'your'
>>> you.bankcode
4649
>>> your.save()  # save Your object.

Delete

>>> client = Client("http://api.server.com/your/v1/")
>>> message = client.message(subject="subject delete 1", body="body delete 1")
>>> message.save()
>>> message.id
<message: {u"id": u"1", u"subject": u"subject delete 1", u"body": u"body delete 1"}>
>>> message.delete()  # remove Message object.
>>> try:
>>>     message.id
>>> except AttributeError:
>>>     assert True  # throw AttributeError.

Class:

Client

System Message: WARNING/2 (/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/docs/source/client.rst, line 4)

autodoc: failed to import class u’Client’ from module u’queryset_client’; the following exception was raised: Traceback (most recent call last): File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/envs/latest/lib/python2.7/site-packages/sphinx/ext/autodoc.py”, line 551, in import_object __import__(self.modname) File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/queryset_client/__init__.py”, line 1, in <module> from client import Client File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/queryset_client/client.py”, line 5, in <module> import slumber ImportError: No module named slumber

Model

class queryset_client.client.model_gen(**configs).Model(**kwargs)

Bases: object

delete()
  • Return type: NoneType
save()
  • Return type: NoneType

schema(*attrs)

  • attrs example

    >>> self.schema("fields")
    # out fields schema
    >>> self.schema("fields", "id")
    # out id schema
    
  • Parameters: attrs (tuple)
  • Return type: dict
  • Returns: model schema

Manager

System Message: WARNING/2 (/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/docs/source/manager.rst, line 4)

autodoc: failed to import class u’Manager’ from module u’queryset_client.client’; the following exception was raised: Traceback (most recent call last): File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/envs/latest/lib/python2.7/site-packages/sphinx/ext/autodoc.py”, line 551, in import_object __import__(self.modname) File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/queryset_client/__init__.py”, line 1, in <module> from client import Client File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/queryset_client/client.py”, line 5, in <module> import slumber ImportError: No module named slumber

System Message: WARNING/2 (/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/docs/source/manager.rst, line 6)

autodoc: failed to import class u’ManyToManyManager’ from module u’queryset_client.client’; the following exception was raised: Traceback (most recent call last): File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/envs/latest/lib/python2.7/site-packages/sphinx/ext/autodoc.py”, line 551, in import_object __import__(self.modname) File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/queryset_client/__init__.py”, line 1, in <module> from client import Client File “/home/docs/checkouts/readthedocs.org/user_builds/tastypie-queryset-client/checkouts/latest/queryset_client/client.py”, line 5, in <module> import slumber ImportError: No module named slumber

Change History:

History

0.7.2 (2013-02-17)

  • Support decimal field. (In ver py2.7)
  • Support new slumber and requests package.

0.7.1rc1 (2012-12-31)

  • Support issue #34
  • Support issue #33

0.6.4 (2012-08-14)

  • Support issue #29
  • Add clear method in the ManyToManyManager.
  • Add remove method in the ManyToManyManager.

0.6.3 (2012-07-15)

  • Moved testsuite position.

0.6.2 (2012-07-15)

0.5.2 (2012-07-10)

  • First release.

Indices and tables