Django 1.10。重構表單
學習模板。對方法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。
的問題是,提交的表單集是這樣的:
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(' - ')。然後我會以某種方式處理數據。
def post(self, request):
l = list(request.POST.keys())
l.remove("csrfmiddlewaretoken")
for element in l:
sp = element.split("-")
pass
嗯,這很麻煩。我感覺笨拙。如此笨拙,我甚至不知道在has_changed
方法中是否有實際價值。
你能否建議我一個優雅的方式來重建一個formset。