J'ai un modèle avec des choix dynamiques, et je voudrais retourner une liste de choix vide si je peux garantir que le code est exécuté dans le cas d'un Commande django-admin.py migrate/makemigrations
pour l'empêcher de créer ou de signaler des modifications de choix inutiles.Détecter si le code est en cours d'exécution dans le contexte de la commande migrate/makemigrations
code:
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(),)
Je pense donc que si je peux détecter le contexte de l'exécution dans lazy_discover_foreign_id_choices
je peux choisir de sortir une liste de choix vide. Je pensais à tester sys.argv
et __main__.__name__
mais j'espère qu'il y a peut-être un moyen plus fiable ou une API?
Comment vos choix sont-ils dynamiques? Pourriez-vous poster du code? – aumo
Bien sûr, code ajouté – DanH
Comment importer 'Performance' et' Location'? – Ivan