Я пытаюсь создать новую объектную книгу, используя форму HTML, но я получаю HttpResponse None.Я нахожу здесь почти такой же случай: Django ModelForm с внешним ключом , но мой код все еще не работает.Я не могу найти, что не так.
models.py
class Author(models.Model):
""" Author's class - defines an book's author """
name = models.CharField(max_length=140)
def __str__(self):
return self.name
class Book(models.Model):
""" Book class - defines a book """
title = models.CharField(max_length=140)
author = models.ForeignKey("Author", on_delete=models.CASCADE)
read = models.BooleanField(default=False)
forms.py
class BookForm(forms.ModelForm):
title = forms.CharField(max_length=200)
author = forms.ModelChoiceField(queryset=Author.objects.all())
class Meta:
model = Book
fields = ["title", "author", "read"]
class AuthorForm(forms.ModelForm):
class Meta:
model = Author
fields = ["name"]
books.html
<form class="form-inline my-2 my-lg-0" method="POST">
{% csrf_token %}
<input class="form-control mr-sm-2" type="text" placeholder="Title" aria-label="addbook" name="title">
<input class="form-control mr-sm-2" type="text" placeholder="Author" aria-label="addbook" name="author">
<button class="btn btn-outline-secondary my-2 my-sm-0" type="submit">Add New Book</button>
</form>
views.py
def books(request):
if request.method == 'POST':
form = BookForm(request.POST or None)
if form.is_valid():
form.save(commit=True)
all_books = Book.objects.all
all_authors = Author.objects.all
return render(request, 'books.html', {'all_books': all_books, 'all_authors':all_authors})
else:
all_books = Book.objects.all
all_authors = Author.objects.all
return render(request, 'books.html', {'all_books': all_books, 'all_authors':all_authors})
Я думаю, что-то не так с views.py или books.html.Я прочитал большую часть документации Django, но до сих пор не нашел ответа, который помог бы мне в моем случае.