Django JSON包含类列表的类列表 - 正确的反序列化和JSON到模型的表示?

时间:2014-10-31 13:09:03

标签: python json django django-models deserialization

在Django 1.6中,我使用serializers.deserialize尝试将以下JSON(我在客户端手动序列化)反序列化为以下模型。

** JSON应该表示一个对象列表,每个对象再次包含一个对象列表。因此,“测试”列表和每个测试都包含“子测试”列表 - 如下所示:

[
    {
        "pk": 1, 
        "model": "polls.test", 
        "fields": {
            "category": "CategoryThing", 
            "parent_name": "parent_test_name_1",
            'subtest': [
                       {'pk': 2,
                        'model': 'polls.subtest',
                        'fields': {'status': 'passed',
                                   'regression_status': 'disabled',
                                   'name': 'sub_test_name_1'
                                   }
                       }, 
                       {'pk': 2, // corrct pk ?
                        'model': 'polls.subtest',
                        'fields': {'status': 'passed',
                                   'regression_status': 'enabled',
                                   'name': 'sub_test_name_2'
                                   }
                       }

    }, 
    // more parent test objects containing multiple subtest objects like above..
]

当我尝试将JSON中的列表表示为Django模型时,我的问题出现了 - 所以当反序列化子测试时,以及从我的JSON中删除嵌入式数组/列表时。 我认为在Django模型中表示它的最佳方式是两个模型类,一个用于父测试(测试)和一个用于子测试( SubTest ),如下所示:

class Test(models.Model):
  parent_name = models.CharField(max_length=200)
  category = models.CharField(max_length=200)


class SubTest(models.Model):
  test = models.ForeignKey('Test', related_name='subtest')
  name = models.CharField(max_length=200)
  status = models.CharField(max_length=200)
  regression_status = models.CharField(max_length=200)

我的问题

  • 如何最好地表示包含Django模型中的类列表的类?我认为为了表示该关联,SubTest类中需要ForeignKey“指向“测试中的条目。

  • 我正在使用JSONEncoder手动编码JSON。因此,我正在构建pk,模型和字段以及您在JSON上面看到的所有内容,我自己。 包含包含对象列表的类的python对象的列表看起来是否正确?我想要实现的(非常粗略的)UML是非常直接的,并且是1到多之间的关系测试和子测试。所以Test有很多SubTests。并且测试都在列表中。


+------------+ 1    *..1 +------------+   1     1..*  +----------+  
|    list    |---------->|    Test    |<>-------------| SubTest  |  
|     of     |           |            |               |          |  
|    Tests   |           |            |               |          |  
+------------+           +------------+               +----------+   

我感谢任何帮助或意见。


编辑:更改了名称,为问题添加了更多详细信息。

0 个答案:

没有答案