Use django-candv-choices with django-rest-framework.
Table of contents
Install from PyPI:
$ pip install django-rf-candv-choices
For example, you have some model which uses
candv_x.django.choices.ChoiceField
to store one of allowed values. This
might be a User
model, which has user_role
field, where values for
user_role
are defined by USER_ROLES
constants container.
Use candv_x.rest_framework.choices.ChoiceField
for user_role
serialization:
from rest_framework import serializers
from candv_x.rest_framework.choices import ChoiceField
from .constants import USER_ROLES
from .models import User
class UserSerializer(serializers.ModelSerializer):
user_role = ChoiceField(USER_ROLES)
class Meta:
model = User
fields = ('id', 'name', 'user_role', )
If you need to expose list of possible choices for your field, then you can
use a ChoicesList
base view to get a class-based view:
from candv_x.rest_framework.choices import ChoicesList
from .constants import USER_ROLES
class UserRoleList(ChoicesList):
choices = USER_ROLES
The only thing you need to do is to define choices
attribute.
There is a faster way also: you can use a coalitions_list
view factory to
get a function-based view:
from candv_x.rest_framework.choices import simple_choices_list
from .constants import USER_ROLES
user_role_list = simple_choices_list(USER_ROLES)
You can click a version name to see a diff with the previous one.
1.0.0 (Aug 1, 2015)
Initial version