我在这里做了很多搜索,并阅读了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数据的传输可能需要最长的时间,如果它存储在数据库或文件系统中,则情况也是如此。