我已经在这里完成了一些搜索并阅读了Django的ManyToMany文档,并认为这种模型类型符合我的需求。但是,考虑到此字段在管理页面上显示的方式,我担心此类型的数据太多,无法正常工作。
我有两个型号,Image和Post。我想设置我的模型,使Image可以与多个帖子相关联,反之亦然。我担心的是,有数十/数十万的帖子和图片,管理页面将无法管理,加载时间太长。
这就是我现在所拥有的:
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的外键。 Post和Image之间的每个关联都会在该表中有一个条目。那会有用吗?
答案 0 :(得分:1)
这将产生两个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数据的传输可能需要花费最长的时间,如果它存储在db或文件系统中,则会发生这种情况。