Для части 1. вашего вопроса:
Django автоматически устанавливает для вас обратную связь.в вашей категории у вас есть доступ к атрибуту post_set
, который сам по себе является Manager
, поэтому вы можете сделать:
def posts(self):
return self.post_set.all()
Проверьте документы для получения дополнительной информации по этому вопросу.
Для части 2. У меня есть менее полный ответ ... Если у вас возникла необходимость разбить модели на множество файлов, у вас, вероятно, есть более фундаментальная проблема.Я бы сказал, что вам следует подумать о том, чтобы разбить это огромное приложение на несколько меньших.
Я думаю, что лучший совет, который я получил в плане уменьшения размера моих приложений, - это "сделать одну вещь".Если ваше приложение не может быть описано в относительно короткой фразе, стоит подумать о том, как разбить его на несколько небольших приложений, каждое из которых будет «делать одно».
Конечно, скорее загружен.Требуется немало планирования, чтобы понять, как разбить некоторые сложные задачи, и иногда задним числом является единственным способом увидеть, где вещи вышли из-под контроля.И рефакторинг чего-то такого размера, о котором вы говорите, может быть довольно пугающим.(Если вы можете сказать, что я говорю из опыта!).Мой единственный совет в этом случае - делать шаг за шагом.Попробуйте разбить то, что выглядит как большие, охватывающие приложения проблемы, на небольшие управляемые куски и делать их, когда можете.
Чтобы удовлетворить ваши насущные потребности, я бы предложил сгруппировать ваши модели в файлы по темам или категориям.Это может привести вас к реорганизации этого приложения (которое звучит как мамонт) в несколько небольших приложений.Я думаю, что это направление, которое вы действительно должны идти с этим.