作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为我的模型批量创建对象。我的模型是
class Fees(models.Model):
city = models.CharField(max_length=200, blank=True)
contact = models.CharField(max_length=200, blank=True)
class = models.CharField(max_length=200, blank=True)
veg = models.BooleanField(default=False)
rollno = models.CharField(max_length=200, blank=True)
我的字典值是 -
response = {
'A101': {
'VEG': True,
'CONTACT': '12345',
'CLASS': 'SIX',
'ROLLNO': 'A101',
'CITY': 'CHANDI',
},
'A102': {
'VEG': True,
'CONTACT': '54321',
'CLASS': 'SEVEN',
'ROLLNO': 'A102',
'CITY': 'GANGTOK',
},
}
目前我正在做如下 -
def create_obj(response):
for key, value in response.items():
fee_obj, _ = Fees.objects.get_or_create(
rollno=key, defaults={
**change_value
})
yield fee_obj
那么我怎样才能批量创建对象。任何帮助将不胜感激。
最佳答案
您可以按照以下几行进行尝试,这只会产生 2 次数据库命中:
def create_obj(response):
# 1st db query: existing fees instances form response
existing = Fees.objects.filter(rollno__in=response.keys())
keys = set(f.rollno for f in existing)
# 2nd db query: bulk create non-existing
new = Fees.objects.bulk_create([
Fees(**{ke.lower(): va for ke, va in value.items()})
for key, value in response.items() if key not in keys
])
yield from existing
yield from new
关于python - 如何在 Django 中为字典批量创建和保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468309/
我是一名优秀的程序员,十分优秀!