Model Method from rest_framework modelSerializer
For your first question source attribute is the answer, citing:
May be a method that only takes a self argument, such as URLField('get_absolute_url')
For your second answer, yes it is also possible. Check the example it provides in their docs: http://www.django-rest-framework.org/api-guide/serializers/#dynamically-modifying-fields
PS: I really love drf for its very complete documentation =).
EDIT
To use the source attribute you can just declare a new explicit field like so:
is_project = serializers.BooleanField(source='is_project')
With this, is_project field has the value of the is_project method of your instance. Having this, when creating the dynamic serializer (by modifying its init method) you can add the 'project' field if it's True.
@argaen is absolutely right, source
is a DRF core argument, and would most definitely solve your problem. However, it's redundant to use source
, if the field name is the same as the source
. So the above answer won't require you specify source
, since field
name is_project
is the same as source
name is_project
.
So in your case:
is_project = serializers.BooleanField()