Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ModelViewSet中创建Django记录后获取该记录的ID_Django_Django Rest Framework - Fatal编程技术网

在ModelViewSet中创建Django记录后获取该记录的ID

在ModelViewSet中创建Django记录后获取该记录的ID,django,django-rest-framework,Django,Django Rest Framework,我想获取在Django REST Framework API调用期间创建的记录的ID,以便在需要作为API调用结果运行的代码中使用它 简言之,我正在使用POST调用上传一个图像文件到我的照片模型,并且我希望,作为该POST调用的结果(并且在ViewSet中处理它),将刚刚创建的照片记录的ID插入到另一个模型(在我的例子中称为Item model)中的记录中 我的问题是PhotoViewSet中的位置我可以访问已创建记录的ID吗 我的照片模型如下所示: class Photo(models.Mod

我想获取在Django REST Framework API调用期间创建的记录的ID,以便在需要作为API调用结果运行的代码中使用它

简言之,我正在使用POST调用上传一个图像文件到我的照片模型,并且我希望,作为该POST调用的结果(并且在ViewSet中处理它),将刚刚创建的照片记录的ID插入到另一个模型(在我的例子中称为Item model)中的记录中

我的问题是PhotoViewSet中的位置我可以访问已创建记录的ID吗

我的照片模型如下所示:

class Photo(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to="userphotos/", height_field=None, width_field=None, max_length=100)
    date_submitted = models.DateTimeField(auto_now_add=True)
class PhotoSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Photo
        read_only_fields = ('user', 'photo', 'item')
class PhotoViewSet(viewsets.ModelViewSet):
    queryset = Photo.objects.all()
    serializer_class = PhotoSerializer
    parser_classes = (MultiPartParser, FormParser,)

    def perform_create(self, serializer):
        the_itemID = self.request.data['item_id']
        the_userID = self.request.data['user_id']
        the_user = User.objects.get(pk=the_userID)
        the_item = Item.objects.get(pk=the_itemID)

        serializer.save(user=the_user, item=the_item, photo=self.request.data.get('photo'))
关联的序列化程序如下所示:

class Photo(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to="userphotos/", height_field=None, width_field=None, max_length=100)
    date_submitted = models.DateTimeField(auto_now_add=True)
class PhotoSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Photo
        read_only_fields = ('user', 'photo', 'item')
class PhotoViewSet(viewsets.ModelViewSet):
    queryset = Photo.objects.all()
    serializer_class = PhotoSerializer
    parser_classes = (MultiPartParser, FormParser,)

    def perform_create(self, serializer):
        the_itemID = self.request.data['item_id']
        the_userID = self.request.data['user_id']
        the_user = User.objects.get(pk=the_userID)
        the_item = Item.objects.get(pk=the_itemID)

        serializer.save(user=the_user, item=the_item, photo=self.request.data.get('photo'))
关联的ModelViewSet如下所示:

class Photo(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to="userphotos/", height_field=None, width_field=None, max_length=100)
    date_submitted = models.DateTimeField(auto_now_add=True)
class PhotoSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Photo
        read_only_fields = ('user', 'photo', 'item')
class PhotoViewSet(viewsets.ModelViewSet):
    queryset = Photo.objects.all()
    serializer_class = PhotoSerializer
    parser_classes = (MultiPartParser, FormParser,)

    def perform_create(self, serializer):
        the_itemID = self.request.data['item_id']
        the_userID = self.request.data['user_id']
        the_user = User.objects.get(pk=the_userID)
        the_item = Item.objects.get(pk=the_itemID)

        serializer.save(user=the_user, item=the_item, photo=self.request.data.get('photo'))

serializer.save()
返回一个Photo对象,此时您可以访问其id。

调用
serializer.save()
应返回刚刚创建的实例

instance=serializer.save(…)


instance\u id=instance.id

在我的情况下它不起作用。我这里有一个几乎相似的问题,有没有什么方法可以直接返回id或排除某些字段?