我有一个名为 Keyword 的简单模型:
class Keyword(models.Model):
name = models.CharField(max_length=50, blank=False, null=False)
我正在尝试进行bulk_create,但是批量数据可能包含已经存在的关键字,因此我分两步进行操作。首先获取现有关键字,然后批量创建新关键字。以下是我在此过程中所做的一个小例子:
In [12]: t = ["aaaa", "dene"]
In [16]: existing = Keyword.objects.filter(name__in=t).all()
In [17]: new = set(t).difference(list(existing.values_list("name", flat=True)))
In [18]: new
Out[18]: {'aaaa'}
In [19]: existing
Out[19]: [<Keyword: dene>]
In [20]: created = Keyword.objects.bulk_create([Keyword(name=name) for name in new])
In [21]: created
Out[21]: [<Keyword: aaaa>]
In [22]: existing
Out[22]: [<Keyword: aaaa>, <Keyword: dene>]
bulk_create 和 create 都会更新前一个过滤器的结果集。这很可能是一个错误,但我也可能在这里遗漏了一些要点。我的实施有什么问题吗?
Django 版本是 1.5.3。