RestMeta¶
Like Django Pyston allowes to define extra model configuration in meta class. For Pyston Meta class is named RestMeta. You can see its definition in short example:
class User(models.Model):
created_at = models.DateTimeField(verbose_name=_('created at'), null=False, blank=False, auto_now_add=True)
email = models.EmailField(verbose_name=_('email'), null=False, blank=False, unique=True)
contract = models.FileField(_('file'), null=True, blank=True, upload_to='documents/')
is_superuser = models.BooleanField(_('is superuser'), default=True)
first_name = models.CharField(_('first name'), null=True, blank=True, max_length=100)
last_name = models.CharField(_('last name'), null=True, blank=True, max_length=100)
class RESTMeta:
fields = ('created_at', 'email', 'contract', 'solving_issue', 'first_name', 'last_name', 'is_superuser')
detailed_fields = ('created_at', '_obj_name', 'email', 'contract', 'solving_issue', 'first_name', 'last_name')
general_fields = ('email', 'first_name', 'last_name')
direct_serialization_fields = ('created_at', 'email', 'contract', 'solving_issue', 'first_name', 'last_name')
Access to rest meta values is throught rest_meta static parameter of the model:
User._rest_meta.fields
-
RestMeta.fields¶
With this attribute you can define which fields will be returned with the REST resource. If no detailed_fields, general_fields or direct_serialization_fields these attributes are same as the fields attribute. fields attribute is not required.
-
RestMeta.detailed_fields¶
The attribute defines witch fields will be returned from resource to request on the one concrete object by default. Client can define this fields itself with X-Fields header but if the header is empty is returned fields defined in detailed_fields.
-
RestMeta.general_fields¶
Defines default fields returned for client request to more objects of which fields can be serialized for object returned via foreign key.
-
RestMeta.guest_fields¶
Defines fields that can be serialized for object to which the client has no right. It is used for situations when client has right to the object that has foreign key to forbidden object. By default it is:
guest_fields = (OBJ_PK, '_obj_name')
-
RestMeta.direct_serialization_fields¶
It defines fields that is serialized directly with serialize function without REST resource.
-
RestMeta.default_fields¶
Attribute defines fields that must be returned always. These fields needn’t be defined in detailed_fields, general_fields or direct_serialization_fields but it is automatically added, by default it is:
default_fields = (OBJ_PK, '_obj_name')
-
RestMeta.extra_fields¶
Extra fields is used if you can allow to return more fields from REST but you don’t want to return them by default. Client must sent request with X-Fields header for obtaining.
-
RestMeta.filter_fields¶
Defines fields that is allowed for resource filtering.
-
RestMeta.order_fields¶
Defines fields that is allowed for resource ordering.
-
RestMeta.extra_filter_fields¶
Defines fields that extends default fields that is defined inside all model resources that is allowed for filtering.
-
RestMeta.extra_order_fields¶
Defines fields that extends default fields that is defined inside all model resources that is allowed for ordering.