批量更改 django 数据库 slug 数据
Posted
技术标签:
【中文标题】批量更改 django 数据库 slug 数据【英文标题】:Batch changes to django database slug data 【发布时间】:2012-02-02 20:51:11 【问题描述】:我最近在我的 mysql 数据库模型中添加了 slug 字段(我不知道为什么我之前没有想到这样做)。现在我的数据库中有一堆空白的 slug 字段。我包括了一个save definition in each model
class test(models.Model):
q = models.CharField(max_length=30)
s = models.SlugField()
def save(self, *args, **kwargs):
self.s = slugify(self.q)
super(test, self).save(*args, **kwargs)
现在我想写一些东西来填充模型中的每条记录。 关于我可以编写什么代码的任何建议,也许可以让它循环遍历我的所有模型/记录并填充 slug?
一个额外的并发症(虽然我不确定我是否很在意这个)。我在每个模型中都有一个字段:
last_modified = models.DateTimeField("Last Modified", auto_now=True)
我宁愿不触发这个,因为记录并没有真正被修改。 我可以在不更新 last_modified 字段的情况下填充 slug 吗?
【问题讨论】:
可能有帮助:***.com/questions/7499767/… 我们在这里谈论多少数据(多少对象)? 足够多的对象,我当然不想手动完成。但不是一吨。 10个模型。每个模型可能有 3 打对象 致力于实施 aganders3 的建议。 . . 【参考方案1】:好吧,如果它不是很多数据,而且只是一次性的,那就在 shell 中做吧:
$ python manage.py shell
>>> from my_app.models import Test
>>> for obj in Test.objects.all():
>>> obj.save()
如果您要经常这样做,请写一个 custom management command 这样做。
至于您的auto_now
问题,这就是我停止使用auto_now
和auto_now_add
的原因。每次我用过它们,我总是在以后把它们撕掉。事实上,Django 开发人员表示他们认为它们已被弃用,并且将来可能会被删除。我只需在运行命令之前编辑源代码并删除该选项,然后将其重新添加或替换为自定义 save()
逻辑。
【讨论】:
以上是关于批量更改 django 数据库 slug 数据的主要内容,如果未能解决你的问题,请参考以下文章