2015-07-01 4 views
2

только что начал дурачиться с Django и наткнулся на ссылку here о том, как создавать пули. Мне сказали, чтобы выполнить следующие изменения в существующую модель:Django - Slugs - Key (slug) =() дублируется

from django.template.defaultfilters import slugify 

class Category(models.Model): 
    name = models.CharField(max_length=128, unique=True) 
    views = models.IntegerField(default=0) 
    likes = models.IntegerField(default=0) 
    slug = models.SlugField(unique=True) 

    def save(self, *args, **kwargs): 
     self.slug = slugify(self.name) 
     super(Category, self).save(*args, **kwargs) 

    def __unicode__(self): 
     return self.name 

Это сработало очень хорошо, пока я не попытался перенести базу данных с помощью:

python manage.py makemigrations 

выше просили значения по умолчанию, поэтому следующее гид, я дал это ». Затем:

python manage.py migrate 

Возврат выше "ДЕТАЛИ: Ключ (пуля) =() дублируется."

Я не совсем уверен, почему это произошло. Возможно, это потому, что я добавляю новое уникальное поле, и я не могу заполнить его «»? Если да, то что мне нужно сделать, чтобы заполнить базу данных?

ответ

6

Документация explains how to migrate in these circumstances. Быстрое резюме:

  • создать поле без уникального = True
  • создать миграцию с функцией RunPython, которая перебирает все категории и звонки экономить на них, которые будут заполнять слизняк
  • создать окончательную миграцию который устанавливает уникальный = True.
Смежные вопросы