我有一个序列化并创建的简单模型。此视图集如下:
class OrderViewset(viewsets.ModelViewSet):
depth = 1
serializer_class = OrderSerializer
...
def perform_create(self, serializer):
serializer.save(user=self.request.user)
populate_ing(serializer)
一旦用户保存并创建了模型,我就打算射击并调用“ populate_ing(xxx)”,后者将使用模型(在这种情况下为订单)并使用外键关系创建许多相关对象。 / p>
是否可以在保存时进行处理?相信,如上所述,通过覆盖perform_create我应该这样做。而且,最重要的是,如何访问刚刚创建的模型?
为了更清楚地了解我的追求,我希望执行以下操作:
我的序列化器如下:
class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = Order
fields = '__all__'
在带有表单的普通Djnago视图中,我会对其进行处理以达到以下效果:
def view_create_order(request):
form = OrderForm(request.POST or None)
if form.is_valid():
new_order = form.save()
populate_ing(new_order)
context = {"form": form}
template = "order/order-update.html"
return render(request, template, context)
答案 0 :(得分:2)
创建的实例将在 instance
属性中可用,因此可以将其传递给 populate_ing()
函数,
class OrderViewset(viewsets.ModelViewSet):
# depth = 1
serializer_class = OrderSerializer
...
def perform_create(self, serializer):
serializer.save(user=self.request.user)
populate_ing(serializer.instance)