【发布时间】:2015-08-08 03:42:29
【问题描述】:
我有一个表单,允许用户记录他们的活动。为简单起见,假设我只有两个希望用户填写的字段。
- 时间
- 动作
一天中,用户可以填写多个时间+操作对。我在前端使用了 javascript,以允许用户根据需要添加这些对。
因此,我不知道事先会有多少对。因此,我无法为其创建预定义的 ModelForm。
为了处理这个问题,我用一个唯一的名称标记了每个时间和操作字段。所以当我收到一个 POST 请求时,我会在 request.POST 字典中得到一个这样的列表:
- time_1: 9:50
- action_1:唤醒
- time_2: 11:00
- aciton_2:锻炼
- ...
然后,我从字典中减去每一对,并将它们放入 ModelForm 中进行验证并保存到数据库中。
class TimeActionModel(Model):
time = DateField()
action = CharField(max_length=100)
class TimeActionForm(ModelForm):
class Meta:
model = TimeActionModel
class TimeActionView(View):
def post(self, request, *args, **kwargs):
self._subtract_and_save(request)
def _subtract_and_save(request):
#loop through the request.POST dictionary
#pull out each pair
#stuff each one into a ModelForm object
if form.is_valid():
form.save()
这是我的问题:
- 您觉得这种方法合适吗?
- 处理这种情况的“Django 方式”是什么?
谢谢!
【问题讨论】: