如何在Django REST中手动填充关系模型

时间:2019-04-12 18:18:09

标签: python django django-rest-framework

我还是Django和DRF的新手。我有2个模型(Policy和Rescue),Rescue通过外键policy_id与Policy相关。我没有问题发布JSON消息,并通过CreateView使用请求数据填充Policy。但是,需要根据从发布到策略的JSON数据进行的一些计算来填充第二模型Rescue。救援无法提前发布。我很努力,但没有任何线索。

这与嵌套序列化程序有关吗?

我试图

我可以这样尝试吗:在类CreateView中:

class CreateView(generics.CreateAPIView):

    def create(self, request, *args, **kwargs):
        my_serializer = self.get_serializer(data=request.data)
        ...
        # get a policy object based on 'policy_id' against serializer
        my_policy = Policy.objects.get(policy_id=my_serializer.data['policy_id'])
        ...
        ... # some calculations to work out a rescue id, and will be returned and saved.
        Rescue.objects.create(rescue_id='QD1234', policy=my_policy)

1 个答案:

答案 0 :(得分:0)

您可以使用通用的CreateAPIView并覆盖perform_create方法。

def perform_create(self, serializer):
    my_policy = serializer.save()
    # you custom calculation for rescue_id
    rescue_obj = Rescue.objects.create(rescue_id='QD1234', policy=my_policy)

执行创建方法在此处记录:https://www.django-rest-framework.org/api-guide/generic-views/#methods