【发布时间】:2013-06-11 19:20:53
【问题描述】:
所以我不确定是否将其作为 Django 或 SQL 问题提出,但是我有以下模型:
class Picture(models.Model):
weight = models.IntegerField(default=0)
taken_date = models.DateTimeField(blank=True, null=True)
album = models.ForeignKey(Album, db_column="album_id", related_name='pictures')
我可能有数以千计的图片记录子集,我需要按taken_date 对它们进行排序,并通过设置weight 值来保持顺序。
例如在 Django 中:
pictures = Picture.objects.filter(album_id=5).order_by('taken_date')
for weight, picture in enumerate(list(pictures)):
picture.weight = weight
picture.save()
现在,我预计会有 1000 条记录,这可能需要很长时间。有没有更有效的方法来执行这项任务?我假设我可能需要求助于 SQL,因为我最近开始学习 Django 在数据库批量操作方面不一定“还存在”。
【问题讨论】:
-
示例代码是否将权重设置为当前值?我看不到实际更新的地方,还是我遗漏了什么?
-
在原始查询集和 SQL 中,我为每行创建一个
weight值,它是一个序列号,根本不是从原始记录中获取的,然后应用该权重值为picture.weight。 -
请添加您的解决方案作为您自己问题的答案。这让以后会查看此问题的其他人更清楚,并允许您的答案被投票赞成/反对,并与可能给出的其他答案进行比较。
标签: python mysql django django-1.4