【发布时间】:2018-11-05 12:23:16
【问题描述】:
我正在使用 Django 记录游戏会话。例如,会话具有时间、地点、联赛和比赛。我可能需要一次录制许多玩过的游戏。我为会话创建了一个表单,我现在可以轻松地输入这些,一切都很好。
问题在于,所有比赛通常都在同一个联赛的同一个地方,例如大约在同一时间,所以我希望在保存一个表格后,呈现一个新的创建表格,其中地点、联赛和时间已经设置为合理的默认值(与上次保存的地点和联赛相同,可能相同的时间加上 90 分钟)。
我不确定解决此问题的最佳方法。会话数据存储似乎很有吸引力,但受到以下事实的限制:每个都需要 JSON 可序列化才能存储在那里。
我在想也许我可以将信息从数据库中提取出来,例如在视图的上下文中添加最后保存的此类对象的副本。但不知何故,我必须使用该上下文来填充仅在我的模板中的默认值:
{{ form.as_table }}
我喜欢它如此简单,如果我不需要,我不想打破它并设计一个表格。有没有办法让它保持简单,并根据之前的提交查看各个字段默认为某个值?
我正在努力想一个简单的方法。
由于我认为这是一个不太可能新颖或新的用例,并且其他人可能已经解决了,因此我想先提出这个问题,然后再进行更深入的思考。
这是一个已解决的问题吗?是否有规范的 Django 方法来填充 CreateView 类生成的默认表单? UpdateView 使用提供给它的实例的字段填充相同的默认表单。并且 CreateView 尊重模型定义中指定的默认值。但是有没有一种规范的方法来填充 CreateView 部分使用在加载时确定的默认值。
我怀疑它需要从 CreateView 派生一个新类并覆盖 get_initial()。但是我似乎找不到关于它的清晰文档或好的示例,并且如前所述,想知道这是否不是通过规范解决方案解决的问题。
【问题讨论】:
标签: django django-forms django-views