Reputation: 181
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
Reputation: 599610
Yes, you do have that id: in instance
.
instance.save()
return redirect('pagedetail', page_id=instance.id)
Upvotes: 1