In Django, you can create a model with a ForeignKey relationship by using the ForeignKey
field. The ForeignKey
field is used to create a many-to-one relationship between two models. Here's an example of how to create a Django model with a ForeignKey
relationship:
Let's say you have two models: Author
and Book
. Each book is written by an author, and you want to establish a ForeignKey relationship between them.
python# models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
bio = models.TextField()
def __str__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=200)
published_date = models.DateField()
author = models.ForeignKey(Author, on_delete=models.CASCADE)
def __str__(self):
return self.title
In the example above:
Author
model has two fields: name
and bio
.Book
model has three fields: title
, published_date
, and author
.author
field in the Book
model is a ForeignKey
field that establishes a many-to-one relationship with the Author
model. The on_delete=models.CASCADE
argument means that if an Author
is deleted, all associated Book
objects will also be deleted.After defining your models, you'll need to run the following commands to apply these changes to your database:
bashpython manage.py makemigrations python manage.py migrate
These commands will create the necessary database tables based on your model definitions.
Now you can use these models in your Django application. For example, you can create an author and associate books with that author:
python# Creating an author
author = Author.objects.create(name='John Doe', bio='A prolific author.')
# Creating books associated with the author
book1 = Book.objects.create(title='Book 1', published_date='2023-01-01', author=author)
book2 = Book.objects.create(title='Book 2', published_date='2023-02-01', author=author)
This establishes a relationship between the Author
and Book
models, where each book is associated with a specific author through the author
field.