Сценарий Django добавить поле в базу данных - PullRequest
0 голосов
/ 08 июля 2010

Я добавил поле 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 ]

1 голос
/ 08 июля 2010

Из вашего опубликованного кода не очевидно, что вы фактически просматриваете все свои 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 внутри вашего приложения.


Другим способом реализации было бы переопределение метода save вашей модели Track. Он будет проверять наличие слагов emtpy при каждом сохранении (что не работает).

0 голосов
/ 08 июля 2010

Вы можете установить значение по умолчанию следующим образом:

slug = models.SlugField(default=process_slug)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...