【问题标题】:Running save() for all objects为所有对象运行 save()
【发布时间】:2019-05-19 21:28:00
【问题描述】:

我今天将在我的网站上进行迁移,我添加了新的字段(slug)和带有 save() 的 slugify 方法。它是这样的:

def save(self, *args, **kwargs):
        self.slug = slugify(self.tag+'-'+self.title)
        super(Image, self).save(*args, **kwargs)

我的模型有大约 50 个条目,我不想手动保存它们只是为了为所有它们生成 slug。

有没有办法自动完成?

【问题讨论】:

标签: python django


【解决方案1】:

您只需运行一个简单的迁移命令即可。

首先,您需要为您的应用生成一个空迁移。

python manage.py makemigrations --empty yourappname

生成的迁移文件如下所示:

# Generated by Django A.B on YYYY-MM-DD HH:MM
from django.db import migrations

class Migration(migrations.Migration):

    dependencies = [
        ('yourappname', '0001_initial'),
    ]

    operations = [
    ]

在操作列表中,您可以附加原始 SQL 查询。

操作 = [ migrations.RunSQL('SQL 查询来改变你的 slug 字段'), ]

例如:

migrations.RunSQL('ALTER TABLE Customer MODIFY Address char(100);'), 

PS:由于这里只有 50 个条目,您可以关注 Daniel 的评论。但是在处理大量行时,我会推荐迁移方法。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2015-11-16
    • 2012-07-30
    相关资源
    最近更新 更多