• Как динамически менять ForeignKey у детей базовой абстрактной модели?

    @Rostislav_B Автор вопроса
    Это хорошее решение, я похоже пробовал делать) но нужно что-то универсальное, чтобы в потомках я ничего не дописывал, потому что могут быть еще дополнительные похожи поля, а потомков очень много и каждый раз менять или добавлять что-то проблематично. Нужно, чтобы я работал только с базовой моделью.
  • Как динамически менять ForeignKey у детей базовой абстрактной модели?

    @Rostislav_B Автор вопроса
    Pavel Denisov, немножко не то, мне нужно, чтобы в детях был метод в котором я передам строку или число и по этому значению буду определять какую модель нужно подставить в ForeignKey, но когда я так делаю, то в детях берет только с абстрактной модели, а не из метода который переопределен в детях. Возможно я что-то неправильно делаю.
    В первом примере в Test1Model метод get_test_id возвращает "1", а нужно "5", и создается ForeignKey не по той модели что нужно.
  • Reloading models в Django?

    @Rostislav_B Автор вопроса
    FulTupFul, к сожалению partition использовать не могу, только табл. с различными префиксами вида region _ * _ data (вместо "*" - id региона) + есть еще подтаблицы (16 шт.) с такими же префиксами
  • Reloading models в Django?

    @Rostislav_B Автор вопроса
    sim3x,
    Более того, разделение на подтаблицы снимет 1/16 проблемы
    для каждой табл (region _ * _ data) есть еще подтаблицы (16 шт.) с другими характеристиками) все запросы летают) никаких проблем нет

    str(int(prefix))очень стремно, такое впечатление, что префикс еще откуда-то с клиента приезжает.
    к сожалению да, с клиента приходят

    Сделайте tuple / named tuple со списком своих регионов и бросайте ексепшен, если региона нет в данном tuple
    это все я в view уже делаю)

    Про модели
    Не уверен в работоспособности решения
    Даже не представляю, как такое тестировать

    работает все хорошо, но меня такое решение немного смущает, поэтому и поднял этот вопрос, потому что нигде не нашел информации
    работает так же как и обычная модель)
  • Reloading models в Django?

    @Rostislav_B Автор вопроса
    sim3x,
    Если кто-то сделал такую архитектуру, то он и должен вам ответить, как ее использовать

    он специалист по БД) я хотел услышать здесь ответ можно ли делать в Django "Reloading models", то есть, чтобы я в одной модели мог использовать все табл., и как лучше это делать)

    Сейчас есть подозрение, что "спец" совсем не спец

    спец норм, у него более 20 лет опыта с БД, и построил архитектурные решения в хороших проектах

    0. В часности, как реализованы FK/M2M от и к данным таблицам

    здесь долго объяснять) но если нужно, то могу описать

    1. Сколько там реально данных, что простейшая фильтрация по инт полю там убивает СУБД

    фильтрация по нескольким полям, 3 поля TINYINT (4), 11 полей INT (11), 2 поля DATETIME
    фильтрация с операторами "=", "! =", "<=", "> =" + иногда группировки

    2. Какое железо

    4 vCPU
    16 ГБ RAM
    160 ГБ Disk space
    20 ТБ Traffic

    сейчас я делаю так:
    def get_test_data_model(prefix):
        db_table_name = 'region_' + str(int(prefix)) + '_data'
    
        class TestDataMetaClass(models.base.ModelBase):
            def __new__(cls, name, bases, attrs):
                name += db_table_name
                return models.base.ModelBase.__new__(cls, name, bases, attrs)
    
        # region_*_data
        class TestData(models.Model):
            __metaclass__ = TestDataMetaClass
        ...........
    
            class Meta:
                app_label = db_table_name
                db_table = db_table_name
                verbose_name = 'Test' + str(int(prefix)) + 'Data'
                verbose_name_plural = 'Test' + str(int(prefix)) + 'Data'
    
        return TestData
  • Reloading models в Django?

    @Rostislav_B Автор вопроса
    sim3x,
    сколько Тб у вас сейчас в данной таблице?
    там зависит все от числа записей в табл., так как по большей части полей идет разная фильтрация, во время тестов БД загибалась, поэтому и было принято решение разбить на 25 табл. я не знаю сколько они сейчас весят.

    зачем?
    таблицы сделаны вручную, потому что за ними смотрит специалист по БД, который и делал архитектуру базы.
    я к сожалению не могу делать там какие-то изменения без согласия с ним, такая архитектура уже утверждена и я изменить ее не могу.
  • Reloading models в Django?

    @Rostislav_B Автор вопроса
    sim3x, все табл. одинаковые, только название отличается region _ * _ data (вместо "*" - id региона)
  • Reloading models в Django?

    @Rostislav_B Автор вопроса
    sim3x, есть таблицы region _ * _ data (вместо "*" - id региона) таких таблиц - 25, они сделаны для того, чтобы уменьшить нагрузку на табл. потому что если бы была общая, то не выдержала бы такой нагрузки как сейчас. Делать 25 моделей как по мне - плохая идея, так как менять что-то придется во всех моделях. Вариант с одной табл. не годится. Поэтому я и делал "Reloading models", но не знаю правильно ли так делать и какие могут быть последствия.

    таблицы сделаны вручную.