Python Django`loaddata`加载具有不同pk(id)的相同对象的好方法
我使用loaddata加载设备 例如,我有一个example.json: 你们怎么看,我有10个相同的对象,相同的模型有相同的名称,但pk值不同。加载数据后,我将在数据库中看到10个对象。没关系 给出一个如何减少代码的提示,但保留相同的结果(如果存在)。谢谢你Python Django`loaddata`加载具有不同pk(id)的相同对象的好方法,python,django,django-serializer,Python,Django,Django Serializer,我使用loaddata加载设备 例如,我有一个example.json: 你们怎么看,我有10个相同的对象,相同的模型有相同的名称,但pk值不同。加载数据后,我将在数据库中看到10个对象。没关系 给出一个如何减少代码的提示,但保留相同的结果(如果存在)。谢谢你 base = { "model": "foo.bar", "fields": { "name": "dmytryi" } } data = [{**base, **{'pk': id}} for id in
base = {
"model": "foo.bar",
"fields": {
"name": "dmytryi"
}
}
data = [{**base, **{'pk': id}} for id in range(1, 11)]
这将把基本字典和{'pk':id}字典解压到一个新字典中。输出如下所示:
[{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 0},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 1},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 2},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 3},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 4},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 5},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 6},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 7},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 8},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 9}]
[{**{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar',}, **{'pk': i}} for i in range(1, 11)]
你可以这样把它缩短:
[{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 0},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 1},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 2},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 3},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 4},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 5},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 6},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 7},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 8},
{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar', 'pk': 9}]
[{**{'fields': {'name': 'dmytryi'}, 'model': 'foo.bar',}, **{'pk': i}} for i in range(1, 11)]
但我认为那更糟