我有一个具有动态选择的模型,并且我想返回一个空的选择列表,如果我可以保证代码在发生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