Beyond strings and numbers, Django models express relationships—foreign keys, one-to-one, and many-to-many—keeping relational data normalized.
Common field types
CharField,TextField,EmailField,URLFieldIntegerField,DecimalField,BooleanFieldDateField,DateTimeField,JSONFieldFileField,ImageField— uploads to MEDIA_ROOT
Relationships
class Author(models.Model):
name = models.CharField(max_length=100)
class Article(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
tags = models.ManyToManyField("Tag")
on_delete defines behavior when the related row is deleted—CASCADE removes articles; PROTECT blocks deletion.
Important interview questions and answers
- Q: ForeignKey vs ManyToMany?
A: FK is many-to-one (many articles, one author); M2M is many-to-many (articles and tags). - Q: on_delete=CASCADE risk?
A: Deleting an author deletes all their articles—sometimes PROTECT or SET_NULL is safer. - Q: Related name?
A:author.articles_setor customrelated_name="articles"for reverse queries.
Self-check
- Which relationship links Article to Author?
- What does on_delete control?