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 数据的传输可能需要最长的时间,如果它存储在数据库或文件系统中,那将是正确的。