【发布时间】:2018-02-23 13:09:32
【问题描述】:
我正在使用 django-import-export Django 库,但它不适用于 m2m 关系。
我有以下 models.py:
class Writer(models.Model):
name = models.CharField(verbose_name='Nome', max_length=20)
last_name = models.CharField(verbose_name='Sobrenome', max_length=50, default='')
def __str__(self):
return '%s (%s)' % (self.last_name,self.name)
class Book(models.Model):
book = models.CharField(verbose_name='Título', max_length=200)
isbn = models.CharField(verbose_name='ISBN:',max_length=13,help_text='13 Caracteres')
writer = models.ManyToManyField('Writer', verbose_name='Escritor(es)')
def __str__(self):
return self.book
# Cria uma string a partir dos 3 primeiros nomes de autores (se existe)
def display_writer(self):
"""
Creates a string for the Genre. This is required to display genre in Admin.
"""
return ', '.join([ writer.name for writer in self.writer.all()[:3] ])
display_writer.short_description = 'Writer'
O arquivo de resources.py:
from import_export import resources
from import_export.fields import Field
from import_export.widgets import ManyToManyWidget
from .models import Book, Writer
class BookResource(resources.ModelResource):
writer = Field(column_name='writer', attribute='writer', widget=ManyToManyWidget(Writer,separator=',', field='name'))
class Meta:
model = Book
skip_unchanged = True
report_skipped = False
import_id_fields = ( 'isbn' ,)
fields = ('isbn', 'book', 'writer', )
导入csv文件时不报错,但m2m字段的数据无所谓。
遵循 csv 文件中的数据示例。
【问题讨论】:
-
csv 数据是什么样的?
-
原因可能是因为您将
skip_unchanged设置为true。您可以尝试更改数据或将标志设置为 false。 -
@HåkenLid,包含 csv 数据图像。
-
@Sagar 我进行了测试,将其配置为 false,但在没有来自“writer”字段的数据的情况下继续导入。
-
你有没有让这个工作?
标签: python django django-import-export