Django脚本向数据库添加字段

时间:2010-07-08 13:02:51

标签: python django

我在我的数据库中添加了一个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()

2 个答案:

答案 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)