Django RestFramework. Как переопределить метод destroy()?
В интернете много ответов на данный вопрос, но вот у меня не получилось реализовать как мне надо. Есть модель Products:
class Product(models.Model):
""" Модель товаров """
name = models.CharField("Название", max_length=50)
description = models.TextField("Описание", default='')
price = models.FloatField("Цена", default=0.00)
favourites = models.ManyToManyField(User, related_name='products')
created_at = models.DateTimeField("Создано", auto_now_add=True)
updated_at = models.DateTimeField("Обновлено", auto_now=True)
def __str__(self):
return self.name
def get_review(self):
return self.review.all()
class Meta:
verbose_name = "Товар"
verbose_name_plural = "Товары"
Есть сериализатор создания списка избранных товаров:
class FavouritesCreateSerializer(serializers.ModelSerializer):
""" Сериализатор создания списка избранных товаров """
class Meta:
model = User
fields = ("products",)
def create(self, validated_data):
validated_data['username'] = self.context['request'].user
products = validated_data.pop('products')
user_info = User.objects.get(username=self.context['request'].user)
for product in products:
user_info.products.add(product.id)
return user_info
и сериализатор вывода информации о пользователе:
class UserDetailSerializer(serializers.ModelSerializer):
"""Serializer для информации об избранных продуктах пользователя."""
favourites = serializers.SerializerMethodField()
def get_favourites(self, data):
user_info = User.objects.get(id=self.context['request'].user.id)
result = user_info.products.all()
return ProductSerializerForFavourites(result, many=True).data
order = OrderDetailSerializer(many=True, read_only=True)
class Meta:
model = User
fields = ('username', 'favourites', 'order')
в нём выводится список избранных товаров и заказ пользователя. На странице выводится следующая информация:
{
"username": "user",
"favourites": [
{
"name": "some_product"
},
{
"name": "some_product"
}
],
"order": [
{
"user": "user",
"status": "IN_PROGRESS",
"total": 38200.0,
"position": [
{
"product": "some_product",
"quantity": 1
},
{
"product": "some_product",
"quantity": 4
}
],
"created_at": "2021-02-28T11:20:57.055137Z",
"updated_at": "2021-02-28T11:21:52.448573Z"
}
]
}
на этой же странице ниже выводится список товаров для добавления в избранное(сериализатор создания, которого показан выше). В нём можно выбрать сразу несколько товаров и по нажатии POST они появляются с списке favourites. Если выбрать повторно, то список меняется на новый. А как удалить этот список, чтоб по нажатии кнопки delete на странице список favourites становился пустым? Я пытался переопределить метод destroy парой способов, которые нашёл, например с помощью @receiver в моделях, но при нажатии на кнопку delete на странице пользователя просто удаляется пользователь из базы данных со всей информацией о нём. Если нужно что-то ещё добавить к написанному - пишите.