Django + MySQL:存储多个外键的性能

Django + MySQL: performance on storing multiple foreign key

我有两个模型 PostItem 希望有它们的 images 字段,它引用模型 Image:

的实例
class Image(models.Model):
    image = models.ImageField(upload_to='images')

我能想到的第一个办法是PostItem都加一个TextField,然后把Imageimage_instance.image.url存起来实例,所以每次我想显示 itempost 的所有图像时,我获取 item.images 并将字符串拆分为一个数组,所有 url 都在那里。

第二种方法是将 postitem 字段添加到 Image 模型作为可为空的外键字段。所以每次我想显示 postitem 的所有图像时,我都会做类似 Image.objects.filter(item=some_item_instance) 的操作,然后提取 .image.url.

我想知道哪种方法在实践中更好,或者还有其他更好的方法?

只需使用 ManyToManyField 来存储 Post(或 Item)和 Image 之间的关系,然后遍历它。像这样 models.py:

class Image(models.Model):
    image = models.ImageField(upload_to='images')

class Post(models.Model):
    body = models.TextField()
    images = models.ManyToManyField(Image)

在其他地方,从 Post 实例中提取 images 的集合并遍历它:

my_post = Post.objects.first()
for image in my_post.images:
    print image.url