Skip to main content
 首页 » 编程设计

python之Django 多对多字段之可以处理大型数据集吗

2024年10月25日38lvdongjie

我在这里进行了大量搜索,并通读了 Django 的 ManyToMany 文档,认为这种模型类型符合我的需要。但是,考虑到此字段在管理页面上的显示方式,我担心此类型的数据过多而无法正常工作。

我有两个模型,Image 和 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)

有没有更好的方法来处理这个问题?我考虑过创建一个单独的数据库表,其中包含 Image 和 Post 的外键。帖子和图片之间的每个关联都会在该表中有一个条目。那行得通吗?

请您参考如下方法:

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