Как вручную заполнить реляционную модель в Django REST - PullRequest
0 голосов
/ 12 апреля 2019

Я все еще новичок в Django и DRF.У меня есть 2 модели (Политика и Спасение), и Спасение связано с Политикой по внешнему ключу policy_id.У меня нет проблем с отправкой сообщения JSON и заполнением политики данными запроса с помощью CreateView.Однако, 2-я модель Rescue должна быть заполнена на основе некоторых вычислений из данных JSON, помещенных в Политику.Спасение не может быть отправлено заранее.Я очень старался, но понятия не имел, чтобы сделать это.

Это как-то связано с вложенным сериализатором или чем-то еще?

Я пытался

Могу ли я попробовать так: внутри класса 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 голосов
/ 13 апреля 2019

вы можете использовать общий CreateAPIView и переопределить метод execute_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)

метод create create описан здесь: https://www.django -rest-framework.org / api-guide /родовые-просмотры / # методы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...