Как определить пользовательскую проверку в соответствии с моими правилами и как реализовать Django

Я использую Python 3.10, Django 4.1.2, djangorestframework==3.14.0 (front отдельно)

В заказе поле "Полученные товары" по умолчанию пустое. При получении заказа мы должны удалить эти элементы из поля заказанных товаров и перенести их в полученные.

  1. Полученные продукты должны содержать только продукты из запрашиваемых продуктов
  2. После отправки запроса с количеством полученных продуктов, этот конкретный продукт должен быть удален из запрашиваемых продуктов и добавлен в recived_products

У меня есть две идеи для теоретической реализации.

  1. Использование патча, полученного_продукта и элементов в нем
  2. Отдельный метод

У меня такой код:

class Orders(models.Model):
    delivery_model_choices = (("Pickup", "Pickup"),
                              ("Delivery", "Delivery"))
    order_status_choices = (("Draft", "Draft"),
                            ("Open", "Open"),
                            ("Partially Received", "Partially Received"),
                            ("Received", "Received"),
                            ("Cancelled", "Cancelled"))
    costumer = models.ManyToManyField(Costumers)
    products = models.ManyToManyField(Products)
    recived_products = ???
    date_create = models.DateTimeField(auto_now_add=True)
    delivery = models.CharField(max_length=40, choices=delivery_model_choices)
    delivery_date = models.DateField()
    order_status = models.CharField(max_length=40, choices=order_status_choices)
    total_price = models.CharField(max_length=10)

Прошу Вас привести корректный пример по данной реализации. Я еще новичок в разработке

Я не буду писать полный код, но вы можете попробовать эту логику -

Определите метод Create для набора представлений или представлений (что бы вы ни использовали)

def create(self, request, format=None):
    request.data is the data that you receive
    all_product_recieved = all products that you have received
    recived_products = all_product_recieved - ordered product
    custom_data = create a new dictionary with valid data
    then ...
    serializer = self.get_serializer(data=custom_data)
    if serializer.is_valid():
        serializer.save()
        return Response()
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Надеюсь, это поможет.

Вернуться на верх