как мне использовать сериализатор DRF для получения следующей структуры api?

#django #django-rest-framework

#django #django-rest-framework

Вопрос:

как я могу использовать drf для получения api, подобного:

 {
    "user":{
        "username":"my username",
        "email":"my email"
    },
    "product":[
        {
            "id":id,
            "product_name":"somename",
            "type":"sometype",
            "date_bought":date,
            "image": "image address",...
        },
        {
            "id":id,
            "product_name":"somename",
            "type":"sometype",
            "date_bought":date,
            "image": "image address",...
        },....
    ]
}

  

models.py

 class Product(models.Model):
    product_name=models.CharField(max_length=50)
    price = models.IntegerField()
    product_type = models.CharField(max_length=25)
    description = models.CharField(max_length=250 ,default='', blank=True)
    brand = models.CharField(max_length=25, null=True,blank=True)
    image = models.ImageField(upload_to='images/product_image')
    date_added = models.DateField(auto_now_add=True)
    instock = models.BooleanField(default=True)
    instock_qty = models.IntegerField()

    def __str__(self):
        return f"{self.product_name}"

class UserHistory(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.RESTRICT)
    date_bought = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.user},{self.product}'
  

мне нужно быть ble, чтобы выполнить следующее:

  1. когда ПОЛУЧИТЕ, восстановите вышеуказанные данные.
  2. добавить продукты (пользователь доступен только для чтения, только аутентифицированный пользователь сможет добавить продукт).

как мне написать сериализатор для достижения вышеуказанных целей

довольно новичок в django, поэтому сообщите мне, если я что-то пропустил

Комментарии:

1. какова цель модели UserHistory

2. он записывает транзакцию между пользователем и продуктом, который они покупают. например, пользователь 1 купил продукт 3 в datetime x.

3. Вы хотите выполнить 1 и 2 в одном запросе GET?

4. № 1 — это get для просмотра истории продуктов аутентифицированного пользователя, а 2 — это сообщение для добавления проданных продуктов в историю