Django 多对多字段 - 可以处理大型数据集吗?
Django Many to Many Fields - OK with large datasets?
我在这里进行了大量搜索,并通读了 Django 的 ManyToMany 文档,认为这种模型类型符合我的需要。但是,考虑到此字段在管理页面上的显示方式,我担心此类型的数据过多而无法正常工作。
我有两个模型,Image 和 Post。我想设置我的模型,使一个图像可以与多个 Post 相关联,反之亦然。我担心的是 tens/hundreds 成千上万的 Post 和图像,管理页面将难以管理并且加载时间太长。
这是我现在拥有的:
class Image(models.Model):
post = models.ManyToManyField(Post)
image = models.ImageField(upload_to=f, blank=True)
class Post(models.Model):
post_title = models.CharField(max_length=113)
text = models.CharField(max_length=1500)
pub_date = models.DateTimeField('post date')
image = models.ManyToManyField(Image)
有没有更好的方法来处理这个问题?我考虑过创建一个单独的数据库 table,其中包含 Image 和 Post 的外键。 Post 和图像之间的每个关联都会在 table 中有一个条目。那行得通吗?
这将生成两个 M2M 列。您可能只需要一个 M2M 专栏:
class Image(models.Model):
image = models.ImageField(upload_to=f, blank=True)
class Post(models.Model):
post_title = models.CharField(max_length=113)
text = models.CharField(max_length=1500)
pub_date = models.DateTimeField('post date')
images = models.ManyToManyField(Image)
查询反向关系将指定为:
image_instance.post_set.all()
问题的另一部分是一个数据库优化问题,它决定了您将运行 反对哪种查询。
blob 数据的传输可能需要最长的时间,如果它存储在数据库或文件系统中,那将是正确的。
我在这里进行了大量搜索,并通读了 Django 的 ManyToMany 文档,认为这种模型类型符合我的需要。但是,考虑到此字段在管理页面上的显示方式,我担心此类型的数据过多而无法正常工作。
我有两个模型,Image 和 Post。我想设置我的模型,使一个图像可以与多个 Post 相关联,反之亦然。我担心的是 tens/hundreds 成千上万的 Post 和图像,管理页面将难以管理并且加载时间太长。
这是我现在拥有的:
class Image(models.Model):
post = models.ManyToManyField(Post)
image = models.ImageField(upload_to=f, blank=True)
class Post(models.Model):
post_title = models.CharField(max_length=113)
text = models.CharField(max_length=1500)
pub_date = models.DateTimeField('post date')
image = models.ManyToManyField(Image)
有没有更好的方法来处理这个问题?我考虑过创建一个单独的数据库 table,其中包含 Image 和 Post 的外键。 Post 和图像之间的每个关联都会在 table 中有一个条目。那行得通吗?
这将生成两个 M2M 列。您可能只需要一个 M2M 专栏:
class Image(models.Model):
image = models.ImageField(upload_to=f, blank=True)
class Post(models.Model):
post_title = models.CharField(max_length=113)
text = models.CharField(max_length=1500)
pub_date = models.DateTimeField('post date')
images = models.ManyToManyField(Image)
查询反向关系将指定为:
image_instance.post_set.all()
问题的另一部分是一个数据库优化问题,它决定了您将运行 反对哪种查询。
blob 数据的传输可能需要最长的时间,如果它存储在数据库或文件系统中,那将是正确的。