Ho un modello con scelte dinamiche e vorrei restituire una lista di scelta vuota se posso garantire che il codice venga eseguito in caso di un Comando django-admin.py migrate/makemigrations
per impedire la creazione o l'avviso di modifiche di scelta inutili.Rileva se il codice viene eseguito nel contesto del comando migrate/makemigrations
Codice:
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(),)
Così mi potrebbe pensare se riesco a rilevare il contesto di esecuzione in lazy_discover_foreign_id_choices
quindi posso scegliere di uscita una lista scelta vuota. Stavo pensando di provare sys.argv
e __main__.__name__
ma spero ci sia un modo più affidabile o un'API?
In che modo le tue scelte sono dinamiche? Potresti postare del codice? – aumo
Sicuro, codice aggiunto – DanH
Come importate 'Performance' e' Location'? – Ivan