Is there a way to create a custom field in a serializer that calls a queryset ? Here is what I am trying to do:
I have a serializer for Employee and I want to have "last_attendance" field included.
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = ("id",
"username",
"first_name",
"last_name")
I would like to add one more field "last_attendance". Which is a queryset like this:
"last_attendance" = Attendance.objects.filter(employee_id = id_of_that_employee).last()
UPDATE:
For your info, Im trying to use EmployeeSerializer in this REST api
queryset = Employee.objects.annotate(fullname=Concat('first_name', Value(' '), 'last_name'))
employee_list = queryset.filter(fullname__icontains=request.POST['search_string'],
company=auth_employee.employee.company.id).order_by('id')
page = request.GET.get('page', request.POST['page'])
paginator = Paginator(employee_list, request.POST['page_limit'])
try:
employees = paginator.page(page)
except PageNotAnInteger:
employees = paginator.page(request.POST['page'])
except EmptyPage:
employees = []
serializer = EmployeeSerializer(list(employees), many=True)
data = serializer.data[:]
return Response(data, status=status.HTTP_200_OK)
UPDATE:
I found SO that might be relevant but havent figured out how to apply Django Rest Framework - How to add custom field in ModelSerializer