Django Model with CharField, IntegerField, and DateField
📖 Scenario: You are building a simple Django app to store information about books in a library. Each book has a title, a number of pages, and a publication date.
🎯 Goal: Create a Django model named Book with three fields: a title using CharField, a pages using IntegerField, and a published_date using DateField.
📋 What You'll Learn
Create a Django model class named Book
Add a title field using CharField with max length 100
Add a pages field using IntegerField
Add a published_date field using DateField
💡 Why This Matters
🌍 Real World
Django models are used to define the structure of data stored in a database for web applications.
💼 Career
Understanding Django field types is essential for backend web development roles using Django framework.
Progress0 / 4 steps
1
Create the Book model class
Create a Django model class called Book that inherits from models.Model.
Django
Hint
Start by defining a class named Book that inherits from models.Model.
2
Add the title field with CharField
Inside the Book model, add a field called title using models.CharField with max_length=100.
Django
Hint
Use models.CharField(max_length=100) to create the title field.
3
Add the pages field with IntegerField
Add a field called pages to the Book model using models.IntegerField().
Django
Hint
Use models.IntegerField() to create the pages field.
4
Add the published_date field with DateField
Add a field called published_date to the Book model using models.DateField().
Django
Hint
Use models.DateField() to create the published_date field.
Practice
(1/5)
1. Which Django field type is best for storing a person's full name with a limit on characters? class Person(models.Model): name = ?
easy
A. IntegerField()
B. CharField(max_length=100)
C. DateField()
D. TextField()
Solution
Step 1: Understand the data type needed for a name
A person's name is text, so a text-based field is needed.
Step 2: Choose the field with character limit
CharField stores text with a max length, perfect for names.
Final Answer:
CharField(max_length=100) -> Option B
Quick Check:
Text with length limit = CharField(max_length=100) [OK]
Hint: Use CharField for text with max length limits [OK]
Common Mistakes:
Using IntegerField for text data
Using DateField for names
Using TextField without length limit when limit is needed
2. Which of the following is the correct syntax to define an IntegerField named age in a Django model?
easy
A. age = models.CharField(max_length=3)
B. age = models.DateField()
C. age = models.IntegerField()
D. age = models.Integer()
Solution
Step 1: Identify the correct Django field for integers
IntegerField is the correct field type for whole numbers.
Step 2: Check the syntax for defining the field
It must be assigned as models.IntegerField() inside the model.
Final Answer:
age = models.IntegerField() -> Option C
Quick Check:
Integer field syntax = models.IntegerField() [OK]
Hint: Integer fields use models.IntegerField() exactly [OK]
Common Mistakes:
Using models.Integer() which does not exist
Using CharField for numbers
Omitting parentheses after IntegerField
3. Given this Django model snippet:
class Event(models.Model):
title = models.CharField(max_length=50)
attendees = models.IntegerField()
event_date = models.DateField()
What type of data will event_date store?
medium
A. Dates in YYYY-MM-DD format
B. Whole numbers representing attendees
C. Text strings up to 50 characters
D. Floating point numbers
Solution
Step 1: Identify the field type of event_date
It is defined as models.DateField(), which stores dates.
Step 2: Understand the format stored by DateField
DateField stores dates in a standard format like YYYY-MM-DD.
Final Answer:
Dates in YYYY-MM-DD format -> Option A
Quick Check:
DateField stores dates = Dates in YYYY-MM-DD format [OK]
Hint: DateField stores dates, not text or numbers [OK]
Common Mistakes:
Confusing DateField with CharField
Thinking DateField stores timestamps or datetime
Assuming DateField stores numbers
4. Identify the error in this Django model field definition:
class Product(models.Model):
price = models.IntegerField(max_length=10)
medium
A. IntegerField does not accept max_length argument
B. Field name 'price' is invalid
C. IntegerField should be CharField here
D. Missing default value for price
Solution
Step 1: Check IntegerField arguments
IntegerField does not support max_length; it's for CharField only.
Step 2: Confirm the error cause
Using max_length with IntegerField causes a syntax or runtime error.
Final Answer:
IntegerField does not accept max_length argument -> Option A
Quick Check:
max_length only for CharField = IntegerField does not accept max_length argument [OK]
Hint: max_length is only for CharField, not IntegerField [OK]
Common Mistakes:
Adding max_length to IntegerField
Confusing field names as errors
Thinking default value is mandatory
5. You want to create a Django model for a blog post with a title (max 200 chars), number of likes (whole number), and published date. Which field types should you use for title, likes, and published respectively?
hard
A. CharField(max_length=200), FloatField(), DateField()
B. TextField(), CharField(max_length=200), DateTimeField()
C. CharField(max_length=200), IntegerField(max_length=10), DateField()
D. CharField(max_length=200), IntegerField(), DateField()
Solution
Step 1: Choose field for title with character limit
CharField with max_length=200 fits the title text limit.
Step 2: Choose field for likes as whole number
IntegerField stores whole numbers like likes count.
Step 3: Choose field for published date
DateField stores the date when the post was published.
Final Answer:
CharField(max_length=200), IntegerField(), DateField() -> Option D