0

你好的人,這裏是我的代碼在Django的初始值形成

class F1articles(forms.Form): 
    heading=forms.CharField(max_length=100) 
    content=forms.CharField(widget=forms.Textarea) 
class F2articles(forms.Form): 
    country=forms.CharField(max_length=100) 
    work=forms.CharField(max_length=100) 

這是Urls.py

url(r'^create/(?P<project_id>\d+)/$', FarticlesWizard.as_view([F1articles, F2articles])) 

這是我的看法

class FarticlesWizard(SessionWizardView): 
def done(self,form_list,**kwargs): 
    form_dict={} 
    Varticles_obj=None 

    for x in form_list: 
     form_dict=dict(form_dict.items()+x.cleaned_data.items()) 

    if kwargs.has_key('project_id'): 
     Varticles_obj=Marticles.objects.get(id=kwargs['project_id']) 
     Varticles_obj.heading=form_dict['heading'] 
     Varticles_obj.content=form_dict['content'] 
     Varticles_obj.country=form_dict['country'] 
     Varticles_obj.work=form_dict['work'] 
     Varticles_obj.modified_on=datetime.datetime.now() 
     Varticles_obj.modified_by=self.request.user.username 
     Varticles_obj.save() 
     return HttpResponseRedirect('/display/') 
    else:  
     insert_db=Marticles(heading = form_dict['heading'], 
     content = form_dict['content'], 
      country=form_dict['country'],work=form_dict['work'],created_by=self.request.user) 
     insert_db.save() 
     return HttpResponseRedirect('/display/') 

這工作得很好,沒有問題,但我想設置初始值來形成字段時,URL被調用,有沒有辦法解決這個問題?

+0

是什麼你的看法? – Rohan 2013-03-07 07:22:46

+0

嗨Rohan,問題更新,,,,請檢查,,, – Friend 2013-03-07 07:24:39

回答

0

嗯,我得到它的工作,讓我回答我的問題,..這裏是代碼...

def get_form_initial(self,step): 

    if 'project_id' in self.kwargs: 
     project_id=self.kwargs['project_id'] 
     article=Marticles.objects.get(id=project_id) 
     project_dict = model_to_dict(article) 
     return project_dict 
    else: 
     return self.initial_dict.get(step,{}) 

我認爲這將是有益的給你guyzz ...

1

您可以實施WizardView.get_form_initial(step)方法爲嚮導的每個步驟提供初始數據。

喜歡的東西:

class FarticlesWizard(SessionWizardView): 
    def get_form_initial(self, step): 
     init_dict = {} 
     #get object to populate data 
     if step == '1': 
      init_dict = { 'heading': obj.heading, 'content' : obj.content } 
     if step == '2': 
      init_dict = { 'country': obj.country, 'work' : obj.work } 

     return init_dict 

我不知道你會如何在這種方法得到project_id從網址查詢對象。

+0

嗨Rohan,我試過你的方法,但我得到一個錯誤'get_form_initial()只需要1個參數(2給出)'和IAM從這裏獲取項目ID'kwargs ['project_id']' – Friend 2013-03-07 08:42:20

+0

@Friend,它也應該帶'self'參數,檢查更新的定義。 – Rohan 2013-03-07 08:45:20

+0

嗨Rohan,我試過你的方法,它沒有采用初始值,但顯示的是空數據的表單,並且在提交'FarticlesWizard類沒有定義完成()方法時也出現錯誤,這是必需的「 – Friend 2013-03-07 08:48:30