我最近在我的 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)
现在我想写一些东西来填充我的模型中的每条记录。 关于我可以编写哪些代码的任何建议,也许可以让它循环遍历我的所有模型/记录并填充 slugs?
一个额外的并发症(虽然我不确定我是否关心这个)。我在每个模型中都有一个字段:
last_modified = models.DateTimeField("Last Modified", auto_now=True)
我宁愿不触发这个,因为记录并没有真正被修改。 我可以在不更新 last_modified 字段的情况下填充 slugs 吗?
最佳答案
好吧,如果它不是很多数据,而且它只是一件事情,那就在 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()
逻辑。关于python - 批量更改 django 数据库 slug 数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8735581/