Я в некотором роде новичок в Django и стараюсь максимально разделить мои приложения и собрать как можно меньше повторяющихся фрагментов. Пытаясь следовать стратегии Джеймса Беннетта по созданию повторно используемых приложений . Имея это в виду, я столкнулся с этой проблемой.
Допустим, у меня было приложение, которое хранит информацию о фильмах:
Код будет выглядеть примерно так:
class Movie(models.Model):
name = models.CharField(max_length=255)
...
Теперь, если бы я хотел добавить оценки, я мог бы использовать django-rating и просто добавить поле в свою модель:
class Movie(models.Model):
name = models.CharField(max_length=255)
rating = RatingField(range=5)
...
Это по сути означает, что мое приложение Movie теперь зависит от django-рейтингов, и если бы я хотел использовать его повторно, но больше не нуждалось в рейтингах, мне все равно пришлось бы устанавливать django-рейтинги или модифицировать и отключать мое приложение.
Теперь я мог бы обойти это, используя try / кроме с import и определив поле в случае успеха, но теперь мое приложение для фильмов явно привязано к рейтингу в определении таблицы базы данных.
Кажется, гораздо разумнее разделить две модели и определить отношения в модели рейтингов, а не в фильме. Таким образом, зависимость определяется при использовании рейтинга, но не требуется при использовании приложения «Фильм».
Как вы справляетесь с этой проблемой? Есть ли лучший подход для разделения моделей?
Мне также интересно, есть ли какие-либо серьезные потери производительности при этом.
edit: Я хочу уточнить, что это скорее пример проблемы и несколько надуманный, чтобы проиллюстрировать точку зрения. Я хочу иметь возможность добавлять дополнительную информацию без изменения модели «Кино» каждый раз, когда мне нужно добавить связанные данные. Я ценю ответы до сих пор.