【问题标题】:how to do one to many nested relationships using django rest framework?如何使用 django rest 框架做一对多的嵌套关系?
【发布时间】:2018-04-13 09:26:19
【问题描述】:

在这里我提到了我的 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

税收模型

这是主要的税表,我会提到税名,例如(IGST,GST,VAT),它是一个下拉列表。

产品

这里包含产品详细信息,我在预期输出

中提到过

税务产品

在此模型中,输入的税名和百分比应存储单独的模型。

  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)

This is my frontend screen

https://i.stack.imgur.com/aj7oF.png

那么请告诉我该怎么做?

【问题讨论】:

  • 您能否就您的产品、税务产品、类别和税务详情的含义和关系添加一些上下文?您似乎在代码示例中遗漏了一些内容。
  • Product model 中包含产品详细信息,例如 product_name=Rice、description(到期时)、sales(销售成本)、cost(购买成本),tax_details 包含 Tax名称 =GST(来自我提到的另一个模型作为链接),百分比 = 它包含来自 Taxproduct 模型的税收百分比(例如“10%”)。
  • 对不起,我更困惑了。我绝对可以帮助您处理与 django rest 框架相关的内容,但您必须更清楚。是否可以在您的帖子中包含您的模型(或子集)的图表以澄清事情?例如,您可以使用the graph_models Django extension
  • 在您的 Product 模型中,您有一个 category 字段。但在您的预期输出中,该类别已从产品字段中消失,似乎出现在税务详细信息中?
  • 感谢您的回复。对不起,没有类别的税。它是另一个模型的下拉列表。现在我在上面已经清楚地提到了。

标签: python django-models django-rest-framework


【解决方案1】:

根据我们在 cmets 中的讨论,您需要这样的东西:

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 输出几乎就是您想要的。

【讨论】:

    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 2018-10-05
    • 2017-06-28
    • 2016-05-30
    • 1970-01-01
    • 2015-10-30
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多