Django администратор установил значение поля только для чтения из внешнего сервиса - PullRequest
1 голос
/ 28 апреля 2020

У меня есть модель, в которой идентификатор для хранения генерируется внешней службой, 'job_id'. При создании запрос на отправку отправляется на эту внешнюю службу, а job_id отправляется обратно. Модель создается только в том случае, если получен этот job_id.

В администраторе django этот job_id установлен только для чтения, так как он будет создан внешней службой. Я разместил запрос к внешней службе в функции очистки:

    def clean(self):
        if not self.cleaned_data.get('job_id'):
            response = requests.post(external_service,
                                     params=params, data=data)
            if response.status_code != 200:
                raise ValidationError(_("external_service unavailable. Please try again"))
            self.cleaned_data.update({'job_id': self.__extract_job(response)})

Однако я не могу добавить job_id к очищенным данным, я продолжаю получать:

NOT NULL constraint failed: external_service.job_id

I также пытался

self.cleaned_data.setdefault('job_id', self.__extract_job(response))

, но я не могу прикрепить данные job_id к полю.

...