2016-08-15 2 views
2

У меня есть модель, определенная и более 100 записей данных в моей БД. Я бы хотел, чтобы авто заполняло поле slug и увидело, что оно появилось в admin, так как добавление новых записей для полей более 100 полей - это не то, что я хотел бы сделать.Auto Populate Slug field django

AutoSlug(), кажется, работает, когда я добавляю его в мою модель и сделать миграцию поля оленьей кожи, prepopulated_fields = {'slug': ('brand_name',)} не работает, используя его в моем admin.py и так же я попытался добавить поле по умолчанию на слизняке, как мои желаемое имя поля в модели, но безрезультатно решение не работало.

Есть ли у них какие-либо другие предложения о том, как получить заполненный слизью предварительно заполненный?

class Brand(models.Model): 

    brand_name = models.CharField(unique=True, max_length=100, blank=True, default="", verbose_name=_('Brand Name')) 

    slug = models.SlugField(max_length=255, verbose_name=_('Brand Slug'), default=brand_name) 

ответ

3

Вы можете попробовать добавить метод сохранения в класс Бренд.

from django.template.defaultfilters import slugify 

class Brand(models.Model): 
... 

def save(self, *args, **kwargs): 
    self.slug = slugify(self.brand_name) 
    super(Brand, self).save(*args, **kwargs) 

затем запустить:

python manage.py shell 

>>>from app.models import Brand 
>>>brands = Brands.objects.all() 
>>>for brand in brands: 
>>> brand.save() 

Кроме того, я хотел бы изменить BRAND_NAME вар только имя.

+0

Обратите внимание, что использование метода bulk_create метод save() модели не будет вызываться, а сигналы pre_save и post_save не будут отправлены! – Daviddd

0

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

я хотел бы использовать slugify функция. Я бы создал представление, которое после его вызова получало бы все объекты модели, перебирало бы их и заполняло поле slug каждой модели с помощью функции django.utils.text.slugify с номером модели brand_name в качестве значения.

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