我不确定使用django-import-export tsv文件导入多对多关系表的正确方法。我所做的是创建一个图书表,一个类型表和一个bookgenre through表,其中包含到每个其他表的外键。所以我得到的是:
class Book(models.Model):
title = models.CharField(max_length=255)
class Genre(models.Model):
genre = models.CharField(max_length=64)
class BookGenre(models.Model):
book_id = models.ForeignKey('Book', on_delete=models.CASCADE)
genre_id = models.ForeignKey('Genre', on_delete=models.CASCADE)
然后我导入所有三个表和关系工作,但我不能找出一种方法,使一个视图或模板有效地工作。我认为必须有一个更好的方法来创建一个多对多的关系和导入数据到它。什么好主意吗?
您不需要创建数据透视表,使用多对多关系。
您不创建m2m
模型,而是创建指向特定模型的many-to-many
关系。下面是实现。
class Abc(models.Model):
field = models.TextField()
class Xyz(models.Model):
other_field = models.TextField()
m2m_field = models.ManyToManyField(Abc)
如果你想获得相关的数据,你可以使用:
object_xyz.abcs.all()
或object_abc.xyz_set.all()
如前所述,您可以在文档中找到更详细的信息。