【发布时间】:2013-09-19 20:32:03
【问题描述】:
我正在使用 django-rest-framework 通用视图通过 POST 请求在模型中创建对象。我想知道如何返回在 POST 之后创建的对象的 id,或者更一般地说,关于创建的对象的任何附加信息。
这是创建(并列出)对象的视图类:
class DetectorAPIList(generics.ListCreateAPIView):
serializer_class = DetectorSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
parser_classes = (MultiPartParser, FileUploadParser,)
def pre_save(self, obj):
obj.created_by = self.request.user.get_profile()
def get_queryset(self):
return (Detector.objects
.filter(get_allowed_detectors(self.request.user))
.order_by('-created_at'))
模型序列化器:
class DetectorSerializer(serializers.ModelSerializer):
class Meta:
model = Detector
fields = ('id', 'name', 'object_class',
'created_by', 'public', 'average_image', 'hash_value')
exclude = ('created_by',)
谢谢!
【问题讨论】:
-
创建新对象后,您只需要返回数据库中存在的最后一个 id。此链接可能会对您有所帮助。 stackoverflow.com/questions/2548493/…
-
谢谢你,但我希望在 django-rest-framework 中实现这一点。我想知道有没有比那个级别更低的解决方案。
-
我猜如果
DetectorSerializer继承自ModelSerializer,post方法应该返回创建的模型,我们可以看到DetectorSerializer吗? -
非常感谢@mariodev。对不起,我的问题是客户端。虽然我仔细检查了我是否收到了数据,但我做错了。发送有关创建对象的所有数据。再次感谢!
-
没问题@kahlo。只需自己回答问题,然后选择您的答案作为正确答案。
标签: python django post http-post django-rest-framework