2015-08-06 1 views
1

У меня есть объект модели django, у которого есть поле slug, но этот пул только устанавливается один раз, когда модель создается. Проблема в том, что я переместился через большую базу данных этих моделей из предыдущей версии приложения, у которой не было поля slug, поэтому поле slug теперь имеет значение null для всех старых объектов. Как я могу переписать мою модель или любую часть своих представлений, чтобы автоматически заполнить поле слива всех моих старых объектов модели, а не только новых созданных?Django Slug field генерируется только при создании новых моделей, а не в старых переносимых моделях

class NewLink(models.Model): 
    newlinktag = models.ForeignKey('pageinfo', related_name='newlink_newlinktag') #tags link to which username it belongs to 
    linkcomment = models.CharField(max_length=512) #comment to go along with post 
    url = models.URLField(max_length = 1024) #actual submitted link, need max length so we don't get hacked 
    slug = models.SlugField(('slug'), max_length=512, blank=True) 

    def save(self, *args, **kwargs): 
     self.slug = slugify(self.linkcomment) 
     super(newlink, self).save(*args, **kwargs) 

    def __unicode__(self): 
     return self.url 

ответ

1

Вам необходимо написать преобразователь (updater) в файл миграции (в переднем случае). И если вы хотите, вы можете реализовать отсталый случаю

Пример здесь http://concentricsky.com/blog/2014/jan/data-migrations-south-and-django

+0

Для того, чтобы избежать другую миграции, есть какой-то цикл, я могу написать или создать @property поэтому, когда он доступен вместо поля пробкового он автоматически генерирует слизняк? Просто пытаюсь заставить его работать на этот раз специально, не перенаправив снова – EazyC

+0

Я думаю, что это не очень хорошая идея. Лучшая практика хранит все пули в базе данных. –

+1

На самом деле я просто установил это просто делая это в manage.py оболочки в моем EC2 сервере: от django.template.defaultfilters импорта slugify с = NewLink.objects.all() для связи в C: link.slug = slugify (link.linkcomment) link.save() И теперь он отлично работает. Цикл занял ОЧЕНЬ ДОЛГО, чтобы закончить ха-ха. – EazyC

Смежные вопросы