重建formset

时间:2016-09-25 11:17:17

标签: django django-forms

Django 1.10。

学习formset。对方法has_changed感兴趣。

尝试通过与形式类比来学习:"当提交表单时,我们重新构建它并提供原始数据,以便可以进行比较。 (https://docs.djangoproject.com/es/1.10/ref/forms/api/#checking-which-form-data-has-changed)。

因此,在服务器上我们需要保存初始数据。然后Django呈现html:表单是单独的,我们的formset只是带有特殊id的输入标签。用户提交表单。我们抓住了request.POST

这里我们必须重新构建formset。

问题是提交时,formset看起来像这样:

QueryDict: <QueryDict: {'csrfmiddlewaretoken': ['X5RMIXfwfQH9zUYz7ODw59UPEr1AQaeciJR2qrLU64ipbBnbu4jKEcW0nVc019vC', 'X5RMIXfwfQH9zUYz7ODw59UPEr1AQaeciJR2qrLU64ipbBnbu4jKEcW0nVc019vC'], 'form-0-pub_date': ['2016-01-01'], 'form-1-pub_date': [''], 'form-0-title': ['Initial title'], 'form-1-title': ['']}>

尽我所能,我只能想到:

1。 获得钥匙:

request.POST.keys()

结果:

dict_keys: dict_keys(['csrfmiddlewaretoken', 'form-0-pub_date', 'form-1-pub_date', 'form-0-title', 'form-1-title'])

2。  像str.split一样拆分键(&#39; - &#39;)。然后我会以某种方式处理数据。

def post(self, request):
    l = list(request.POST.keys())
    l.remove("csrfmiddlewaretoken")
    for element in l:
        sp = element.split("-")
    pass

嗯,这一切都很麻烦。而且我觉得笨拙。如此笨拙,我甚至不知道has_changed方法是否有实用价值。

你能否建议我一种优雅的方法来重建一个formset。

1 个答案:

答案 0 :(得分:0)

我找到了答案。它在文档中进一步写入: https://docs.djangoproject.com/en/1.10/topics/forms/formsets/#using-a-formset-in-views-and-templates

set.seed(24)
colcgm6 <- sample(0:3, 24, replace=TRUE)
tssd2 <- rnorm(24)
df2 <- data.frame(r = tssd2, cgmval = colcgm6)