将Django模型对象分组到不同的列

时间:2016-12-21 10:07:11

标签: python django orm

我有以下Django模型

class TestModel(models.Model):
    company_name = models.CharField(max_length=100)
    nick_name = models.CharField(max_length=100)
    created_at = models.DateTimeField()

现在我想创建一个查询/多个查询,它将所有TestModel对象分组到特定的company_name。简而言之,它将具有以下结构。

out - {
    "company_name_test_1": [TestModel1, TestModel2, TestModel3],
    "company_name_test_2": [TestModel4, TestModel5, TestModel6],
}

1 个答案:

答案 0 :(得分:0)

companyNames = ["a", "b", "c"]

result = {}

for name in companyNames:
    result[name] = list(TestModel.objects.filter(company_name = name))

如果要将字典保存为JSON或类似字体,则需要先对序列化的模型进行序列化。

此外,根据您的计划的逻辑,可能值得拥有一家公司'模型,并将TestModels作为其各自公司的外键。

class Company(models.Model):
    name = models.CharField(max_length = 100)
    # other fields and functions

class TestModel(models.Model):
    company = models.ForeignKey(Company)
    nick_name = models.CharField(max_length=100)
    created_at = models.DateTimeField()

然后你可以通过外键过滤来获得公司的测试模型:

results = {}

for company in Company.objects.all():
    results[company.name] = list(company.testmodel_set.all())
相关问题