Getting last insert id of the object saved by serializer in Django

Viewed 145

I have a visitorSaveSerializer which is responsible for validating the data to be saved:

class VisitorSaveSerializer(serializers.ModelSerializer):

class Meta:
    model = Visitor
    fields = ('gsm', 'email', 'firstname', 'lastname')

The problem is:

visitor_serializer = VisitorSaveSerializer(data={...related data here...})
    if visitor_serializer.is_valid():
        visitor_serializer.save() 
        visitor_id = visitor.serializer.data.get("id", 0) // Fails for sure.

OK, I know id is not among serializer fields, so last line fails.

How should I approach saving an object when I need to get last inserted id?

1 Answers

The serializer returns the instance saved, so you can obtain the primary key of that instance with:

visitor_serializer = VisitorSaveSerializer(data={…})
if visitor_serializer.is_valid():
    visitor = visitor_serializer.save() 
    visitor_id = visitor.pk
Related