Я как-то новичок в 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)
...
Это по сути означает, что мое приложение для видео теперь зависит от django-рейтингов, и если я захочу его повторно использовать, но вам больше не нужны рейтинги, мне все равно придется устанавливать django-рейтинги или изменять и форкировать приложение.
Теперь я мог обойти это, используя try/except с импортом и определив поле в случае успеха, но теперь мое приложение для видео явно привязано к рейтингу в определении таблицы базы данных.
Кажется гораздо более разумным разделить две модели и определить отношения в модели рейтингов вместо фильма. Таким образом, зависимость определяется, когда я использую рейтинг, но не нужен при использовании приложения Movie.
Как вы справляетесь с этой проблемой? Есть ли лучший подход для разделения моделей?
Я также задаюсь вопросом, есть ли какие-либо значительные штрафы за производительность при этом.
edit: Я хочу пояснить, что это скорее пример проблемы и несколько надуманный, чтобы проиллюстрировать точку. Я хочу иметь возможность добавлять дополнительную информацию без изменения модели "Кино" каждый раз, когда мне нужно добавлять связанные данные. Я ценю ответы до сих пор.