如何在django rest框架中加入非关系模型?

时间:2017-10-17 09:18:00

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

我有一个关于在django rest框架中加入而不是关系模型的问题。例如,我有两个模型:

  1. 模型类别模板

    class CategoryTemplate(models.Model):
         name = models.CharField(max_length=256)
    
  2. 模特商品

    class Commodity(models.Model):
         name = models.CharField(max_length=255, default=None, null=False)
    

    示例数据:

    *category template
    id    | name
     1    | Pupuk
     2    | Pestisida
    
    *commodity
    id    | name
     1    | Pisang
     2    | Semangka
    
  3. 我的问题是,使用该模型如何加入该模型以获得这样的结果?

     cat_temp_id | cat_temp_name | comm_id | comm_name | category
               1 |   Pupuk       |    1    | Pisang    | Pupuk Pisang
               1 |   Pupuk       |    2    | Semangka  | Pupuk Semangka
               2 |   Pestisida   |    1    | Pisang    | Pestisida Pisang
               2 |   Pestisida   |    2    | Semangka  | Pestisida Semangka
    

    请指教。谢谢。

2 个答案:

答案 0 :(得分:0)

如果您指的是非关系数据库,则不需要像在关系数据库中那样实现最终结果。

您要通过加入两个表来实现目标是什么?

答案 1 :(得分:0)

您要找的是笛卡儿产品,而不是加入

为此,如果您可以迭代它们,则无需弄乱模型。只需编写一个嵌套循环

category_templates = CategoryTemplate.objects.all()
commodities = Commodity.objects.all()

for cat in category_templates:
    for comm in commodities:
        category = "%s %s" % (cat.name, comm.name)

或使用itertools.product

for (cat, comm) in itertools.product(
    CategoryTemplate.objects.all(),
    Commodity.objects.all()
):
    category = "%s %s" % (cat.name, comm.name)