2017-01-17 15 views
1

私はdjangoフォームを使用してdbに新しいオブジェクト(ページ)を追加しています。フォームを送信した後、ページの詳細URLにリダイレクトしたいのですが問題は私は作成されているページのIDを持っていませんでした。 私はこれで私を助けてくださいジャンゴの新しいです。フォームの投稿後にURLにIDを取得する方法

model.pyファイル

class UserPage(models.Model): 
    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    cover_page = models.FileField() 
    page_name = models.CharField(max_length=250) 

forms.py

from django import forms 
from .models import UserPage 

class PageForm(forms.ModelForm): 
class Meta: 
    model = UserPage 
    exclude = ['user'] 
    fields = [ 
     "page_name", 
     "cover_page" 
    ] 

view.py

def create(request): 
if request.user.is_authenticated(): 
    if request.method=='POST': 
     form = PageForm(request.POST , request.FILES) 
     if form.is_valid(): 
      instance = form.save(commit = False) 
      instance.user = User.objects.get(id=request.user.id) 
      instance.save() 
    else: 
     form = PageForm() 
    context = { 
     "form" : form, 
    } 
    return render(request, 'pages/create.html', context) 
else: 
    messages.error(request, "please Login First") 
    return HttpResponseRedirect(reverse('index')) 

url.py

from django.conf.urls import url 
from . import views 
urlpatterns = [ 
    url(r'^(?P<page_id>[0-9]+)/$', views.pageDetail, name='pagedetail'), 
    url(r'^create/$', views.create, name='create_check'), 
] 

答えて

1

はい、あなたはそのIDを持っています:instanceに。

instance.save() 
return redirect('pagedetail', page_id=instance.id) 
関連する問題