Модель динамического выбора модели Django - PullRequest
0 голосов
/ 28 марта 2019

У меня есть модель charfield, в которой есть динамический выбор

class MachineChoices(object):
    def get_machine_choices(self):
        # call external service to get a full list of machines
        ...

    def __iter__(self):
        yield from self.get_machine_choices()

class ExceptionMapping(models.Model):
    machine_id = models.IntegerField(null=True, blank=True, choices=MachineChoices())

Моя проблема в том, что при запуске makemigrations будет сгенерирована миграция для поля со всеми вариантами выбора.

Как мне обойти это без такой гигантской миграции.Удаление этой миграции вручную каждый раз при запуске makemigrations вызывает боль.

Обратите внимание: я спрашиваю, почему это происходит, как я уже спрашивал до .

1 Ответ

1 голос
/ 28 марта 2019

У меня были проблемы с миграциями, я решил их, выполнив другой код в зависимости от того, связан текущий процесс с миграцией или нет, как вы можете видеть в этом вопросе .

В вашемВ этом случае вы могли бы сделать что-то подобное:

class ExceptionMapping(models.Model):
    import sys
    if 'makemigrations' not in sys.argv and 'migrate' not in sys.argv:
        machine_id = models.IntegerField(null=True, blank=True, choices=MachineChoices())
    else:
        machine_id = models.IntegerField(null=True, blank=True)

Я согласен, что это решение немного хакерское, но оно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...