2017-01-12 3 views
0

フォームの編集メソッドをクリックすると、モデルのデータがフォームビューに読み込まれますが、保存ボタンをクリックすると値は保存されませんページは再び同じ値で再ロードされます。フォームを経由してデータベースに新しいフォームを保存すると、正常に動作します"post"メソッド条件がdjangoフォームで機能しない編集と保存

views.py

def sessioncreate(request): 
if request.method=="GET": 
    form=SessionForm(); 
    return render(request,'app/sessions_form.html',{'form':form}); 
elif request.method=="POST": 
    form=SessionForm(request.POST); 
    form.save(); 
    return HttpResponseRedirect('/sessions'); 


def SessionUpdate(request,pk): 
    post = get_object_or_404(Sessions, pk=pk) 
    if request.method == "post": 
     form = SessionForm(request.POST) 
     form.save() 
     return RedirectView('/sessions',pk=form.pk); 
    else: 
     form = SessionForm(instance=post) 


return render(request,'app/sessions_form.html',{'form':form}); 

models.py

class Sessions(models.Model): 
    title=models.CharField(max_length=50) 
    abstract=models.CharField(max_length=2000) 
    track=models.ForeignKey(Track) 
    speaker=models.ForeignKey(Speaker) 
    status=models.CharField(max_length =1, choices=SESSION_STATUSES) 
# returning name in site 
def __str__(self): 
    return self.title 
def get_absolute_url(self): 
    return reverse('sessions_detail', kwargs={'pk':self.pk}) 

class SessionForm(forms.ModelForm): 
    class Meta: 
     model=Sessions; 
     fields=['title','abstract','track','speaker']; 

url.py

url(r'^sessions/$',views.SessionList.as_view(),name='sessions_list'), 
url(r'^sessions/(?P<pk>[0-9]+)/$',views.SessionDetail.as_view() , name='sessions_details'), 

url(r'^sessions/create/$',views.sessioncreate, name='sessions_create'), 
url(r'^sessions/update/(?P<pk>[0-9]+)/$',views.SessionUpdate , name='sessions_update'), 
url(r'^sessions/delete/(?P<pk>[0-9]+)/$',views.SessionDelete.as_view() , name='sessions_delete'), 

session_form.html

{% extends 'layout.html' %} 



{% block content %} 
<form method="post"> 
    {% csrf_token%} 
    {{form.as_table}} 
     <button type="submit">Save</button> 

</form> 

{% endblock %} 

答えて

0

これは私の最後のviews.py更新ファイルでした...何か冗長な私はそこから削除できますか?

def SessionUpdate(request,pk): 
form_class=SessionForm 
post = get_object_or_404(Sessions, pk=pk) 
form = SessionForm(request.POST) 
if request.method == "POST": 
    if form.is_valid(): 
     form = SessionForm(request.POST, instance=post) 
     form.save() 
     return HttpResponseRedirect('/sessions') 
else: 
    form = SessionForm(instance=post) 


return render(request,'app/sessions_form.html',{'form':form}); 
1

すべてのメソッドは大文字です。 if request.method == 'POST'をチェックしてください。

フォームが有効であることを決して確認しないことにも注意してください。保存する前にif form.is_valid()と呼んでください。

+0

ありがとうございました:) – harshityadav95

関連する問題