首页 > 解决方案 > prepopulated_fields 导入数据库时​​不会触发

问题描述

我正在使用 prepopulated_fields prepopulated_fields = {'slug': ('name', 'mark_steel')} ,它在手动安装时可以在管理面板中使用。但是在批量写入数据库时​​它不起作用。

有什么解决方案可以解决这个问题吗?

标签: pythondjangodjango-models

解决方案


如果我正确理解了您的问题...您可以覆盖模型上的 save 方法并添加一些逻辑以自动从 name 和 mark_down 字段创建一个 slug ,而无需手动创建一个。

from django.db import models
from django.template.defaultfilters import slugify

Class TestModel(models.Model):
    name = models.CharField()
    mark_steel = models.CharField()
    slug = models.SlugField()

    def save(self, *args, **kwargs):
       if self.name and self.mark_steel:  # If both have a value, create a slug from both fields
            self.slug = '-'.join((slugify(self.name), slugify(self.mark_steel)))

       elif self.name: # If name alone have a value, create a slug from name field
           self.slug = slugify(self.name)

       elif self.mark_steel: # If mark_steel alone have a value, create a slug from mark_steel 
           self.slug = slugify(self.mark_steel)

        super(Post, self).save(*args, **kwargs)

推荐阅读