保存记录django rest frwamework后如何返回ID

mar*_*lta 0 django django-rest-framework

保存记录django rest frwamework后如何返回ID。

我正在尝试在保存后立即获取保存的对象。

注册成功,但不返回ID。

    empresa = EmpresaCreateSerializer(data=data)
    empresa.user = user_id
    if(empresa.is_valid()):
        empresa.save()
        print(empresa.id)
    else:
        return Response(empresa.errors)
Run Code Online (Sandbox Code Playgroud)

AttributeError:“ EmpresaCreateSerializer”对象没有属性“ id”

模型

class Empresa(models.Model):
    nome = models.CharField(max_length=255, null=True)
    cnpj = models.CharField(max_length=15, null=True)
    user = models.ForeignKey(User)

    def __str__(self):
        return self.nome
Run Code Online (Sandbox Code Playgroud)

序列化器

class EmpresaCreateSerializer(serializers.ModelSerializer):
    nome = serializers.CharField(allow_blank=True, allow_null=True)
    cnpj = serializers.CharField(allow_blank=True, allow_null=True)

    class Meta:
        model = Empresa
        fields = ('id','nome', 'cnpj', 'user')
Run Code Online (Sandbox Code Playgroud)

Jah*_*nov 5

You need to assign the value being returned from the save() method:

obj = empresa.save()
print(obj.id) 
Run Code Online (Sandbox Code Playgroud)

The reason is that save() calls create() of the Serializer which returns an object instance

  • 我正在做同样的事情,但它返回“None”。这是我的代码 `if serializer.is_valid(): Visit_save = serializer.save() print(visit_save.visit_id) # 它返回 None print(VisVisits.objects.latest('visit_id')) # 它返回正确的 ids。` 这里我问了同样的[问题](/sf/ask/3817429451/) (3认同)