Commit 75caf9b9 authored by Deokhyun Lee's avatar Deokhyun Lee

fixed the form and added a .save method to save the model

parent 483a5c02
from django import forms
from .models import Author
from .models import Author, Books
class AddBookForm(forms.Form):
title = forms.CharField(max_length = 100)
author = forms.ModelChoiceField(queryset=Author.objects.all())
publisher = forms.CharField(max_length = 100)
year_published = forms.DateTimeField()
ISBN = forms.CharField(max_length = 13)
blurb = forms.CharField(max_length = 250)
class Meta:
model = Books
fields = '__all__'
def save(self, commit=True):
book = super().save(commit=False)
# Do any additional processing of the form data here
if commit:
book.save()
return book
from django.views import View
from django.urls import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render, redirect
from django.views.generic import ListView, DetailView, CreateView
from django.shortcuts import render
from .models import Author, Books
......@@ -48,17 +47,12 @@ class BookAddListView(CreateView):
fields = '__all__'
template_name = "books/add-book.html"
def form_valid(self, form):
# initially false
book = form.save(commit=False)
# do anything here
# get the pk of the book that was being created
pk = book.pk
print('pk is: ', pk)
# The url will be based on the primary key here as an args.
url = reverse('book-detail', args=[pk])
# save the object
book.save()
# redirects to the url based on the pk
return HttpResponseRedirect(url)
\ No newline at end of file
def post(self, request):
form = AddBookForm(request.POST)
if form.is_valid():
# onSave is called, the form will have essential data and this includes pk as well.
new_book = form.save()
# pass the pk
return redirect('subject_detail', pk = new_book.pk)
else:
return render(request, 'subject_detail.html', {'form': form})
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment