如何在Djang中批量创建和保存字典对象

2024-09-28 05:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为我的对象批量创建模型。 我的模特是

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)

我的字典值是-

^{pr2}$

目前我正在做的如下-

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

那么如何批量创建对象呢。 任何帮助都将不胜感激。在


Tags: keytrueobjvaluemodelsresponsecreate批量
1条回答
网友
1楼 · 发布于 2024-09-28 05:27:08

您可以尝试以下几行,只会创建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

相关问题 更多 >

    热门问题