这里我提到了我的model.py和serilaizers.py我想在这里使用一对多的概念。我的预期输出就像这样
预期输出
{
"id": 1,
"product_name": "Rice",
"description": "expired on 13-04-2018",
"sales": "55",
"cost": "55",
"tax_details": [
{'id': 1, 'tax_name': "http://127.0.0.1:8000/tax/1/", 'percentage': 10},
{'id': 2, 'tax_name': "http://127.0.0.1:8000/tax/3/", 'percentage': 20},
{'id': 3, 'tax_name': "http://127.0.0.1:8000/tax/2/", 'percentage': 05},
... ],
}
Models.py
TAX模式
这是主要的税表,我会在这里提到税收名称(IGST,GST,VAT)这是一个下拉列表。
产品
这里包含产品详情,我在预期输出
中提到过TaxProduct
在此模型中,输入的税名和百分比应存储单独的模型。
class tax(models.Model)
tax_name = models.CharField(max_length=250)
percentage=models.CharField(max_length=250)
class Taxproduct(models.Model):
tax_name = ForeignKey(tax,on_delete=models.CASCADE)
percentage = models.CharField(max_length=3)
class Product(models.Model):
product_name = models.CharField(max_length=25)
description = models.CharField(max_length=150)
category = models.ForeignKey(Category,on_delete=models.CASCADE)
sales = models.CharField(max_length=25)
cost = models.CharField(max_length=25)
tax_details = models.CharField(max_length=250)
https://i.stack.imgur.com/aj7oF.png
所以请告诉我怎么做?
答案 0 :(得分:2)
按照我们在评论中的讨论,你需要这样的东西:
class Tax(models.Model)
name = models.CharField(max_length=250)
percentage = models.CharField(max_length=250)
class Product(models.Model):
product_name = models.CharField(max_length=25)
description = models.CharField(max_length=150)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
sales = models.CharField(max_length=25)
cost = models.CharField(max_length=25)
class TaxProduct(models.Model):
tax = ForeignKey(Tax, on_delete=models.CASCADE)
percentage = models.CharField(max_length=3)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
related_name="tax_details")
与通过表的关系大致是多对多关系。
产品将有一个tax_details
字段,引用税收及其有效百分比,就像您问的那样。 DRF JSON输出将非常符合您的要求。