Django多对多字段-适用于大型数据集



我在这里做了很多搜索,并阅读了Django的ManyToMany文档,认为这种模型类型符合我的需求。然而,考虑到这个字段在管理页面上的显示方式,我担心我会有太多的数据让这种类型无法正常工作。

我有两个模型,图像和邮政。我想设置我的模型,这样一个图像可以与许多帖子相关联,反之亦然。我担心的是,由于有成千上万的帖子和图片,管理页面将无法管理,加载时间过长。

这是我现在拥有的:

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

相关内容

  • 没有找到相关文章

最新更新