У меня есть общая модель 'Order'. Существуют и другие модели, представляющие другие формы Ордена.
Мне нужно десериализовать эти другие экземпляры в нашу общую модель 'Order'. Поэтому я извлекаю набор запросов и превращаю его в список, но не могу правильно десериализовать его в Order.
Заказ имеет 4 поля: reference, delivery_date, note и customer_note.
Другая модель имеет эквивалентные поля с именами external_reference, required_delivery_date, note и customer_note.
class OrderSerializer(serializers.ModelSerializer):
reference = serializers.CharField(source='external_reference', required=True)
delivery_date = serializers.DateField(source='requested_delivery_date')
note = serializers.CharField()
customer_note = serializers.CharField()
class Meta:
model = Order
fields = ('reference',
'delivery_date',
'note',
'customer_note')
Поскольку вы не можете предоставить QuerySet в качестве ввода данных для сериализатора, я превратил его в список:
orders = AppOrder.objects.all()
data = list(orders.values())
serialized = OrderSerializer(data=data, many=True)
Однако это не работает. Источник не захватывает правильное поле:
delivery_date ': [' Это поле обязательно для заполнения. ']
Может быть, я делаю это совершенно неправильно и что есть лучшие способы десериализации одной модели в другую, если так, пожалуйста, расскажите также.
Редактировать: (добавлено 31 окт)
Ситуация, которую мы имеем, состоит в том, что существует несколько возможных реализаций «Заказа». У нас есть X, у которого есть БД с таблицей заказов. У вас также есть Y с другой таблицей заказов. Мы используем неуправляемые модели для извлечения данных из них. Мы получили конечную точку API для возврата информации о заказе. Эта конечная точка использует модель Порядка, которую мы сделали сами. Когда звонят в конечную точку, мы проверяем, кто делает запрос, переходим к правильной неуправляемой модели и получаем заказы. Проблема в том, что это другие модели, в данном случае AppOrder (s). Таким образом, он возвращает QuerySet AppOrders. Поскольку конечная точка ожидает Order QuerySet, мне нужно превратить AppOrders в Order QuerySet, чтобы я мог отобразить его / отфильтровать / упорядочить / и т. Д., Поэтому я пытаюсь сериализовать AppOrder в Order.