Reputation: 63
I created a model named Student. I created a model form. I want to go to detail view not the list view, after submitting model form. How do i do that ?
model.py
class Student(models.Model):
student_name = models.CharField(max_length=100)
father_name = models.CharField(max_length=100)
forms.py
class AdmissionForm(forms.ModelForm):
class Meta:
model = Student
fields = '__all__'
views.py
def admission_form(request):
form = AdmissionForm()
if request.method == 'POST':
form = AdmissionForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('student-list') # i want to redirect to detail view
context = {'form':form}
return render(request, 'student/admission_form.html', context)
In this admission form, i want to redirect to detail view of the student not the list view. How can i do that. In this code, i have redirected to list view.
def student_detail(request, id):
stud = Student.objects.get(id=id)
context = {'stud':stud}
return render(request, 'student/student_detail.html', context)
urls.py
urlpatterns = [
path('admission_form/', views.admission_form, name = 'admission-form'),
path('student/', views.student_list, name = 'student-list'),
path('student/<int:id>/', views.student_detail, name = 'student-detail'),
]
Upvotes: 0
Views: 362
Reputation: 51998
form.save()
will return an instance of Student model. You can use it's id
in redirect like this:
def admission_form(request):
form = AdmissionForm()
if request.method == 'POST':
form = AdmissionForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save()
return redirect('student-detail', id=instance.pk)
Upvotes: 3