У меня есть модель с динамическим выбором, и я хотел бы вернуть пустой список выбора, если я могу гарантировать, что код выполняется в случае django-admin.py migrate/makemigrations
, чтобы предотвратить создание или предупреждение о бесполезных изменениях выбора.Определить, выполняется ли код в контексте команды migrate/makemigrations
Код:
from artist.models import Performance
from location.models import Location
def lazy_discover_foreign_id_choices():
choices = []
performances = Performance.objects.all()
choices += {performance.id: str(performance) for performance in performances}.items()
locations = Location.objects.all()
choices += {location.id: str(location) for location in locations}.items()
return choices
lazy_discover_foreign_id_choices = lazy(lazy_discover_foreign_id_choices, list)
class DiscoverEntry(Model):
foreign_id = models.PositiveIntegerField('Foreign Reference', choices=lazy_discover_foreign_id_choices(),)
Так что я думаю, если я могу обнаружить контекст выполнения в lazy_discover_foreign_id_choices
то я могу выбрать для вывода пустой список выбора. Я думал о тестировании sys.argv
и __main__.__name__
, но я надеюсь, что возможно более надежный способ или API?
Как именно ваш выбор динамичен? Не могли бы вы разместить какой-то код? – aumo
Несомненно, код добавлен – DanH
Как вы импортируете 'Performance' и' Location'? – Ivan