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