1
我正在構建一個Django應用程序,通過API提取數據以跟蹤事件的實況結果,並添加了在顯示之前覆蓋該數據的功能。延遲加載模型字段的選擇
該應用程序的第一項任務是提出請求並將響應存儲在數據庫中,以便設置模型;
class ApiData(models.Model):
event = models.CharField(
_("Event"),
max_length=100,
)
key = models.CharField(
_("Data identifier"),
max_length=255,
help_text=_("Something to identify the json stored.")
)
json = JSONField(
load_kwargs={'object_pairs_hook': collections.OrderedDict},
blank=True,
null=True,
)
created = models.DateTimeField()
理想我想它,以便在管理對象創建和保存方法創建基於在所述對象中的其他選項的API請求後填充ApiData.json
字段。
因爲這些字段會根據從API返回的數據進行選擇,所以我想懶加載選項,但目前我只是在我的表單中獲得標準Charfield()
。 這是延遲加載模型字段選擇的正確方法嗎?或者我應該創建一個自定義的ModelForm
並在那裏加載選項? (這可能是比較典型的做法我猜)
def get_event_choices():
events = get_events()
choices = []
for event in events['events']:
choices.append((event['name'], event['title']),)
return choices
class ApiData(models.Model):
# Fields as seen above
def __init__(self, *args, **kwargs):
super(ApiData, self).__init__(*args, **kwargs)
self._meta.get_field_by_name('event')[0]._choices = lazy(
get_event_choices, list
)()