在导入 Django 之前将值更改为小写



我正在使用Django Import-Export将数据从excel(xlsx(文件导入到我的Django模型中。 我所拥有的有效,但我希望它考虑具有不同大小写的字符的字符串是相同的。目前,如果我在一列中有"黑色安息日"和"黑色安息日",导入会认为他们是不同的艺术家。

是否可以在导入过程中将所有字符串值更改为小写?或者以某种方式配置 Django 以将它们视为相同?

resources.py

class ArtistResource(resources.ModelResource):
class Meta:
model = Artist
import_id_fields = ('artist',)
skip_unchanged = True

models.py

class Artist(models.Model):
artist = models.CharField(primary_key=True, unique=True, max_length=30)
def __str__(self):
return self.artist

admin.py

class ArtistAdmin(ImportExportActionModelAdmin):
resource_class = ArtistResource

是的,文档中对此进行了描述:

待导入数据集的每一行都按照以下步骤进行处理:

  1. 调用 before_import_row(( 钩子以允许在导入行数据之前对其进行修改
  2. get_or_init_instance(( 与当前 BaseInstanceLoader 和数据集的当前行一起调用,返回一个对象和一个布尔值,声明该对象是否是新创建的。

所以你必须这样做before_import_row(),因为如果你以后这样做,get_or_init_instance()会为你创建一个行。

对于任何可能想要我的解决方案的未来读者。

class ArtistResource(resources.ModelResource):
class Meta:
model = Artist
import_id_fields = ('artist',)
skip_unchanged = True
def before_import_row(self, row, **kwargs):
row['artist'] = row['artist'].lower()

相关内容

  • 没有找到相关文章

最新更新