Subjects

All subjects Django Java Python React Spring Boot JavaScript PHP
Sign Up Free
Question 2 of 10 · Django Models & ORM
Interview question

What is the difference between ForeignKey, OneToOneField, and ManyToManyField in Django models? Django models में ForeignKey, OneToOneField, और ManyToManyField में क्या अंतर है?

Answer
Field typeRelationshipExample
ForeignKeyMany-to-oneMany Books, one Author
OneToOneFieldOne-to-oneOne User, one Profile
ManyToManyFieldMany-to-manyMany Students, many Courses
from django.db import models
from django.contrib.auth.models import User

# ForeignKey - many books can belong to one author
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, related_name='books')

author = Author.objects.get(id=1)
author.books.all()  # access related books via related_name

# OneToOneField - each User has exactly one Profile
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField(blank=True)

user = User.objects.get(id=1)
profile = user.profile  # direct one-to-one access

# ManyToManyField - students can enroll in many courses, courses can
# have many students; Django creates a hidden junction table automatically
class Course(models.Model):
    name = models.CharField(max_length=100)

class Student(models.Model):
    name = models.CharField(max_length=100)
    courses = models.ManyToManyField(Course, related_name='students')

student = Student.objects.get(id=1)
student.courses.add(course1, course2)  # adding relationships
student.courses.all()  # all courses this student is enrolled in

course = Course.objects.get(id=1)
course.students.all()  # all students enrolled in this course
Field typeRelationshipउदाहरण
ForeignKeyMany-to-oneकई Books, एक Author
OneToOneFieldOne-to-oneएक User, एक Profile
ManyToManyFieldMany-to-manyकई Students, कई Courses
from django.db import models
from django.contrib.auth.models import User

# ForeignKey
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, related_name='books')

author = Author.objects.get(id=1)
author.books.all()

# OneToOneField
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField(blank=True)

user = User.objects.get(id=1)
profile = user.profile

# ManyToManyField
class Course(models.Model):
    name = models.CharField(max_length=100)

class Student(models.Model):
    name = models.CharField(max_length=100)
    courses = models.ManyToManyField(Course, related_name='students')

student = Student.objects.get(id=1)
student.courses.add(course1, course2)
student.courses.all()

Was this answer clear?