Написание методов .update() для вложенных представлений
Прошу помочь. Не могу разобраться, как переопределить метод update() для вложенного сериализатора.
models.py
class Order(models.Model):
user = models.ForeignKey(
User,
verbose_name='Пользователь',
related_name='orders',
blank=True,
on_delete=models.CASCADE
)
dt = models.DateTimeField(auto_now_add=True)
state = models.CharField(verbose_name='Статус', choices=STATE_CHOICES, max_length=15)
city = models.CharField(max_length=50, verbose_name='Город')
street = models.CharField(max_length=100, verbose_name='Улица')
house = models.CharField(max_length=15, verbose_name='Дом', blank=True)
structure = models.CharField(max_length=15, verbose_name='Корпус', blank=True)
building = models.CharField(max_length=15, verbose_name='Строение', blank=True)
apartment = models.CharField(max_length=15, verbose_name='Квартира', blank=True)
phone = models.CharField(max_length=20, verbose_name='Телефон')
class Meta:
verbose_name = 'Заказ'
verbose_name_plural = "Список заказ"
ordering = ('-dt',)
serializers.py
class OrderItemSerializer(ModelSerializer):
class Meta:
model = OrderItem
fields = ["id", "quantity", "product_info"]
class OrderSerializer(WritableNestedModelSerializer):
ordered_items = OrderItemSerializer(many=True, required=True)
class Meta:
model = Order
fields = [
"id", "dt", "state", "user", "city", "street", "house", "structure", "building", "apartment", "phone",
"ordered_items"
]
read_only_fields = ["user"]
def update(self, instance, validated_data):
order_data = validated_data.pop('ordered_items')
instance.state = validated_data.get('state', instance.state)
instance.city = validated_data.get('city', instance.city)
instance.street = validated_data.get('street', instance.street)
instance.house = validated_data.get('house', instance.house)
instance.apartment = validated_data.get('apartment', instance.apartment)
instance.phone = validated_data.get('phone', instance.phone)
instance.save()
for i in order_data:
print(i["quantity"])
i = OrderItem.objects.update(quantity=i["quantity"])
instance.ordered_items.add(i)
return instance
Но при вводе вложенных параметров ловлю ошибку.
views.py
class OrderViewSet(ModelViewSet):
queryset = Order.objects.all()
serializer_class = OrderSerializer