Jatin Bansal
Jatin Bansal

Reputation: 181

how to get id in the url after submission of form

I am using django forms to add a new object(page) to the db and after submitting the form i want to redirect to the url of page detail but the problem is that i didn't have the id of the page that is being created. I'm new to django so please help me in this.

model.py file

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'),
]

Upvotes: 1

Views: 1669

Answers (1)

Daniel Roseman
Daniel Roseman

Reputation: 599610

Yes, you do have that id: in instance.

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

Upvotes: 1

Related Questions