我在我的数据库中添加了一个slug字段,现在需要进行添加。我想运行一个脚本来查看数据库中的slug字段,如果为空则生成并保存。这就是我的想法,但不起作用。
from project.apps.tracks.models import *
def process_slug():
if not track.slug:
slug = slugify("%s - %s" % (track.name, track.artist))
else:
slug = ""
super(process_slug, track).save()
答案 0 :(得分:1)
从您发布的代码中可以看出,您实际上正在循环遍历所有Track
个对象。
from project.apps.tracks.models import Track
# import for slugify
def process_slug():
""" Populate slug field, if they are empty.
"""
for track in Track.objects.all():
if not track.slug:
slug = slugify("%s - %s" % (track.name, track.artist))
track.slug = slug
track.save()
此类偶然重复命令的一个首选位置是在您的应用程序中的management/commands
下。
另一种实施方法是覆盖Track
模型的save
方法。它会在每次保存时检查emtpy slugs(这不是高效的。)
答案 1 :(得分:0)
您可以像这样设置默认值:
slug = models.SlugField(default=process_slug)