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。
答案 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)