Проблема десериализации для Обнуляемого внешнего ключа Поле Django Rest Framework - PullRequest
1 голос
/ 17 июня 2019

При десериализации поля внешнего ключа, допускающего обнуляемость.Получение ошибки:

У объекта 'NoneType' нет атрибута 'foreign_field'

Эта проблема не возникала до версии Django-Rest-Framework: 3.6.4

Найдена причина проблемы (Удалено Нет проверки и Проверка ObjectDoesNotExist не обрабатывает экземпляр None): Ссылка

Почему убрана эта проверка?

Есть ли обходной путь, который может обработать поле внешнего ключа Nullable?

Пробовал следующие вещи :

  • Попытка установки значения по умолчанию: не сработало
  • Запись метода сериализатора невозможна (множество изменений в существующем коде).

Редактировать:

Структура модели:

class Demo(models.Model):
    name = models.CharField(max_length=100)

class Demo1(models.Model):
   demo = models.ForeignKey(Demo, default=None, blank=True, null=True, on_delete=models.CASCADE)

Сериализатор:

 class Demo1(ModelSerializer):
     demo = CharField(source='demo.name')
     class Meta:
         model=models.Demo1
         fields = ('id', 'demo')

1 Ответ

1 голос
/ 17 июня 2019

Нашли решение:

class Demo1(ModelSerializer):
 demo = CharField(source='demo.name', allow_null=True)
 class Meta:
     model=models.Demo1
     fields = ('id', 'demo')

После помещения allow_null в serializer.it сработало! но не понял, в чем смысл? если мы уже поместили null = True в модель.

...