获取Django中序列化程序保存的对象的最后一个插入ID

tol*_*lga 2 python django python-3.x

我有一个visitorSaveSerializer,它负责验证要保存的数据:

class VisitorSaveSerializer(serializers.ModelSerializer):

class Meta:
    model = Visitor
    fields = ('gsm', 'email', 'firstname', 'lastname')
Run Code Online (Sandbox Code Playgroud)

问题是:

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.
Run Code Online (Sandbox Code Playgroud)

好的,我知道 id 不在序列化程序字段中,所以最后一行失败了。

当我需要获取最后插入的 id 时,我应该如何保存对象?

Wil*_*sem 5

序列化程序返回保存的实例,因此您可以通过以下方式获取该实例的主键:

visitor_serializer = VisitorSaveSerializer(data={…})
if visitor_serializer.is_valid():
    visitor = visitor_serializer.save() 
    visitor_id = visitor.pk
Run Code Online (Sandbox Code Playgroud)