drf-api-tracking icon indicating copy to clipboard operation
drf-api-tracking copied to clipboard

Serialize APIRequestLog

Open seth12 opened this issue 5 years ago • 2 comments

It is possible to serialize APIRequestLog when i try to create a serialize only user.id is returning: Here is my class: class ApiRequestTableSerializer(serializers.Serializer): requested_at = serializers.DateTimeField(format='%d %b %Y') path = serializers.CharField(source="get_path", read_only=True)

class Meta:
    model = APIRequestLog
    fields = ['id', 'requested_at', 'response_ms', 'status_code', 'method','user'
              'path', 'remote_addr', 'host',
              'query_params']

seth12 avatar Aug 15 '20 20:08 seth12

Your code but formatted:

class ApiRequestTableSerializer(serializers.Serializer):
   requested_at = serializers.DateTimeField(format='%d %b %Y')
   path = serializers.CharField(source="get_path", read_only=True)

   class Meta:
       model = APIRequestLog
       fields = ['id', 'requested_at', 'response_ms', 'status_code', 'method', 'user',
              'path', 'remote_addr', 'host',
              'query_params']

eshaan7 avatar Apr 23 '21 17:04 eshaan7

Use serializers.ModelSerializer instead of serializers.Serializer.

Import serializers and APIRequestLog model.

from rest_framework import serializers
from rest_framework_tracking.models import APIRequestLog

Then:-

class ApiRequestTableSerializer(serializers.ModelSerializer):
   requested_at = serializers.DateTimeField(format='%d %b %Y')
   path = serializers.CharField(source="get_path", read_only=True)

   class Meta:
       model = APIRequestLog
       fields = ['id', 'requested_at', 'response_ms', 'status_code', 'method', 'user',
              'path', 'remote_addr', 'host',
              'query_params']

It is working for me.

basith-rahman avatar Apr 13 '22 07:04 basith-rahman