Мой сценарий: я пытаюсь создать базу данных для отслеживания производственных графиков для различных типов шоу.Я сопоставил это со следующей структурой модели:
class Studio(models.Model):
...
class Series(models.Model):
studio = models.ForeignKey(Studio)
...
class Season(models.Model):
series = models.ForeignKey(Series)
...
class Episode(models.Model):
season = models.ForeignKey(Season)
...
class Production(models.Model):
episode = models.ForeignKey(Episode)
Но теперь я также заинтересован в отслеживании производства фильмов.Это создает проблему, потому что фильмы не имеют такую же древовидную структуру, как телевидение.Что-то вроде этого было бы более уместно:
class Studio(models.Model):
...
class Movie(models.Model):
studio = models.ForeignKey(Studio)
...
class Production(models.Model):
movie = models.ForeignKey(Movie)
Проблема здесь в том, что Production
и Studio
абсолютно одинаковы как для фильмов, так и для телевидения (по крайней мере, в этом сценарии), поэтому яне решается иметь полностью отдельные деревья, потому что это потребует дублирования Production
.Один для телевидения и один для фильмов, когда единственным отличием является внешний ключ.
Имеет ли смысл использовать GenericForeignKey
здесь?Где производство может указывать на Episode
или Movie
?Я не решаюсь сделать это, потому что кажется, что консенсус заключается в том, чтобы избегать общих внешних ключей, но я не уверен, как еще это сделать.