У меня есть ситуация, я не знаю, как правильно моделировать. Я хочу, чтобы каждый ребенок в классе был связан с медиа-объектом (фото, видео или музыка). Я хочу знать, какой предпочтительный подход к этой проблеме. Что у меня сейчас есть:
class Something(models.Model):
media = models.ForeignKey(Media)
class Media(models.Model):
title = models.CharField(max_lenght=100)
def get_tiny_object():
pass
def get_big_object():
pass
class Picture(Media):
picture = models.ImageField()
def get_tiny_object():
return ...
...
class Video(Media):
video = models.CharField(max_length=200) #youtube id
...
class Music(Media):
music = ....
Вы поняли идею. Это работает? Должен ли я также записать на «Нечто», что это за носитель?
EDIT:
Идея создания класса Media заключается в том, что я могу отображать в шаблонах, не зная, какой тип мультимедиа я отображаю. get_tiny_object () должен вернуться, если это картинка:
"<img style="width:60px; height: 50px" ...>"
Так что, если у меня есть внешний ключ для медиа-объекта, скажем, его id = 4, знает ли django, что его нужно извлечь из музыкальной таблицы, если объект, с которым я связан, имеет музыкальный вид? Потому что у меня будет 3 разных идентификатора = 4, по одному на каждой таблице (картинка, видео и музыка (и, возможно, еще больше, если домен изменится)).