在我的应用程序中,有一个模型“图像”和几个图像可以关联的模型(事件、地点、成员)。我正在考虑两种建模图像关系的方法。第一个是将每个相关模型的关系字段放在 Image 中(该字段将是 ForeignKey 或 ManyToManyField)。第二种方法是将字段“图像”放入可以具有关联图像的每个模型(在某些模型的情况下,它将只是一个图像)。哪种方式更推荐?
# the first way
class Member(models.Model):
name = models.CharField('name', max_length=128)
class Event(models.Model):
name = models.CharField('name', max_length=128)
class Place(models.Model):
name = models.CharField('name', max_length=128)
class Image(models.Model):
title = models.CharField('title', max_length=128)
members = models.ManyToManyField(Member)
place = models.ForeignKey(Place)
event = models.ForeignKey(Event)
# the second way
class Image(models.Model):
title = models.CharField('title', max_length=128)
class Member(models.Model):
name = models.CharField('name', max_length=128)
images = models.ManyToManyField(Image)
class Event(models.Model):
name = models.CharField('name', max_length=128)
images = models.ManyToManyField(Image)
class Place(models.Model):
name = models.CharField('name', max_length=128)
images = models.ManyToManyField(Image)
我也可以使用泛型关系(第三种方式),或者我可以制作 EventImage、PlaceImage、MemberImage 之类的模型(第四种方式),但我已经决定这些对我来说不太适用。