【发布时间】:2015-12-04 14:28:52
【问题描述】:
我有这个用于表格填充的代码。
def add_tags(count):
print "Add tags"
insert_list = []
photo_pk_lower_bound = Photo.objects.all().order_by("id")[0].pk
photo_pk_upper_bound = Photo.objects.all().order_by("-id")[0].pk
for i in range(count):
t = Tag( tag = 'tag' + str(i) )
insert_list.append(t)
Tag.objects.bulk_create(insert_list)
for i in range(count):
random_photo_pk = randint(photo_pk_lower_bound, photo_pk_upper_bound)
p = Photo.objects.get( pk = random_photo_pk )
t = Tag.objects.get( tag = 'tag' + str(i) )
t.photos.add(p)
这是模型:
class Tag(models.Model):
tag = models.CharField(max_length=20,unique=True)
photos = models.ManyToManyField(Photo)
据我了解这个答案:Django: invalid keyword argument for this function 我必须先保存标签对象(由于 ManyToMany 字段),然后通过add() 将照片附加到它们。但是对于大的count,这个过程需要的时间太长了。有什么方法可以重构此代码以使其更快?
一般来说,我想用随机虚拟数据填充标签模型。
EDIT 1(照片模型)
class Photo(models.Model):
photo = models.ImageField(upload_to="images")
created_date = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User)
def __unicode__(self):
return self.photo.name
【问题讨论】:
标签: python django many-to-many