2017-01-17 2 views
1

Я использую формы django для добавления нового объекта (страницы) в db и после отправки формы, я хочу перенаправить на URL-адрес страницы, но проблема в том, что У меня не было идентификатора создаваемой страницы. Я новичок в django, поэтому, пожалуйста, помогите мне в этом.Как получить идентификатор в URL-адресе после отправки формы

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

Да, у вас есть, что идентификатор: в instance.

instance.save() 
return redirect('pagedetail', page_id=instance.id)