# models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
published_date = models.DateField()
# forms.py
from django import forms
from .models import Book
class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = ['title', 'author', 'published_date']
# views.py
from django.shortcuts import render, redirect
from .forms import BookForm
from .models import Book
def add_book(request):
if request.method == 'POST':
form = BookForm(request.POST)
if form.is_valid():
form.save()
return redirect('book_list')
else:
form = BookForm()
return render(request, 'add_book.html', {'form': form})
def book_list(request):
books = Book.objects.all()
return render(request, 'book_list.html', {'books': books})
<!-- templates/add_book.html -->
<!DOCTYPE html>
<html>
<head>
<title>Add Book</title>
</head>
<body>
<h2>Add Book</h2>
<form method="post" action="{% url 'add_book' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>
</form>
<a href="{% url 'book_list' %}">Book List</a>
</body>
</html>
<!-- templates/book_list.html -->
<!DOCTYPE html>
<html>
<head>
<title>Book List</title>
</head>
<body>
<h2>Book List</h2>
<ul>
{% for book in books %}
<li>{{ book.title }} - {{ book.author.name }} ({{ book.published_date|date:"F d, Y" }})</li>
{% endfor %}
</ul>
<a href="{% url 'add_book' %}">Add Book</a>
</body>
</html>