在我的應用程序中,有一個模型「圖像」和圖像可以涉及的幾個模型(Event,Place,Member)。我正在考慮兩種建模圖像關係的方法。第一個是將關係字段放在Image中,用於每個相關模型(字段將是ForeignKey或ManyToManyField)。第二種方法是將字段「圖像」放到每個可以具有相關圖像的模型上(如果某些模型只有一個圖像)。哪種方式更受推薦?Django:建模關係
# 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(第四方式),但我已經決定這不會爲我工作那麼好。