【发布时间】:2016-05-04 20:31:59
【问题描述】:
我想获取在 Django REST Framework API 调用期间创建的记录的 ID,以便在 API 调用后需要运行的一些代码中使用它。
简而言之,我正在使用对我的照片模型的 POST 调用上传一个图像文件,并且我希望作为该 POST 调用的结果(并且在 ViewSet 中处理它时),插入具有刚刚被创建到另一个模型中的记录中(在我的例子中称为 Item 模型)。
我的问题是 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')
而关联的 ModelViewSet 如下所示:
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'))
【问题讨论】:
标签: django django-rest-framework