自动填充子弹字段Django

Ame*_*chi 5 django django-models django-forms

我定义了一个模型,数据库中有100多个数据条目。我想自动填充一个子弹字段,并在管理员中看到它,因为我不想为100多个字段添加新条目。

当我将AutoSlug()字段添加到模型中并进行迁移时,prepopulated_fields = {'slug': ('brand_name',)}它似乎不起作用,在我的内部使用它时也不起作用admin.py,并且我尝试在slug中将默认字段添加为模型中所需的字段名称但无济于事,解决方案没有工作。

他们还有其他关于如何预装塞子的建议吗?

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)
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以尝试将保存方法添加到Brand类。

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)
Run Code Online (Sandbox Code Playgroud)

然后运行:

python manage.py shell

>>>from app.models import Brand
>>>brands = Brands.objects.all()
>>>for brand in brands:
>>>    brand.save()
Run Code Online (Sandbox Code Playgroud)

另外,我将brand_name var更改为name。

  • 请注意,使用bulk_create模型的save()方法将不会被调用,并且pre_save和post_save信号将不会被发送! (2认同)