2016-09-25 40 views
0

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。

回答