0

我正在使用 iteritems() 遍历字典以在 Django 中创建对象。但是,我发现创建对象的数量与字典对象的数量不同。

在进一步探索时,我发现字典的 iteritems() 方法只返回 197 个元组,而字典本身包含 269 个项目。

data = {...}
print len(data) #output: 269
for k, v in data.iteritems():
    Category.objects.create(name=k).save()
len(Category.objects.all()) #output: 197

型号定义:

class Category(models.Model):
    name = models.CharField(max_length=100)
4

1 回答 1

2

首先,我不建议您使用len(Category.objects.all())来计数对象。相反,您应该使用

Category.objects.count()

这不是风格问题,而是效率问题。后者使用 SQL COUNT,因此对象的数量不是由 python 而是由您的数据库(mysql、sqlite 等)计算的

我无法评论为什么你得到 192 个对象,而不是 267 个。我猜这是因为你的create函数得到了一些不可用的参数——可能k不是字符串,或者它的长度可能超过 100 个字符。

您能否调查哪些元素未保存并提供此信息?

于 2012-10-08T08:52:08.220 回答