我在这里进行了大量搜索,并通读了 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 数据的传输可能需要最长的时间,如果它存储在数据库或文件系统中,那将是正确的。
