Bird
Raised Fist0
Djangoframework~20 mins

Defining models with fields in Django - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Django Model Fields Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this Django model field default value?
Consider this Django model field definition:
age = models.IntegerField(default=20)

What will be the value of age if a new model instance is created without specifying age?
AThe age field will raise a validation error for missing value.
BThe age field will be set to None.
CThe age field will be set to 20 by default.
DThe age field will be set to 0 by default.
Attempts:
2 left
💡 Hint
Think about what the default parameter does in Django model fields.
📝 Syntax
intermediate
2:00remaining
Which option correctly defines a CharField with max length 50 and allows blank values?
You want to define a Django model field that stores text up to 50 characters and can be left blank. Which option is correct?
Aname = models.CharField(max_length=50, blank=True)
Bname = models.CharField(max_length=50, null=True)
Cname = models.CharField(blank=True)
Dname = models.CharField(max_length=50, blank=False)
Attempts:
2 left
💡 Hint
Remember that max_length is required for CharField and blank=True allows empty input.
🔧 Debug
advanced
2:00remaining
What error does this model field definition cause?
Examine this Django model field:
price = models.DecimalField(max_digits=5, decimal_places=2, max_length=10)

What error will this cause when running migrations?
AValueError: max_digits must be greater than decimal_places
BTypeError: DecimalField got an unexpected keyword argument 'max_length'
CNo error, field is valid
DSyntaxError: invalid syntax in field definition
Attempts:
2 left
💡 Hint
Check the valid parameters for DecimalField.
❓ state_output
advanced
2:00remaining
What is the value of 'is_active' after saving this model instance?
Given this model field:
is_active = models.BooleanField(default=True)

And this code:
obj = MyModel()
obj.is_active = False
obj.save()

What will be the value of is_active in the database?
AFalse, because the field was explicitly set before saving.
BTrue, because default=True overrides assigned values.
CRaises IntegrityError due to missing value.
DNone, because BooleanField cannot be set to False.
Attempts:
2 left
💡 Hint
Default is only used if no value is assigned.
🧠 Conceptual
expert
3:00remaining
Which field option combination ensures a unique, non-null email field that can be blank in forms?
You want to define an email field in a Django model that:
- Must be unique in the database
- Cannot be null in the database
- Can be left blank in forms (optional input)
Which option correctly achieves this?
Aemail = models.EmailField(unique=True, null=True, blank=True)
Bemail = models.EmailField(unique=True, null=True, blank=False)
Cemail = models.EmailField(unique=False, null=False, blank=True)
Demail = models.EmailField(unique=True, null=False, blank=True)
Attempts:
2 left
💡 Hint
null controls database nullability; blank controls form validation.

Practice

(1/5)
1. What is the purpose of defining fields in a Django model?
easy
A. To create views for the web application
B. To specify the type of data each column will store in the database
C. To write HTML templates for the frontend
D. To handle user authentication automatically

Solution

  1. Step 1: Understand Django model fields

    Fields in a Django model define what kind of data each column in the database will hold, such as text, numbers, or dates.
  2. Step 2: Differentiate from other components

    Views handle logic, templates handle display, and authentication is separate; fields specifically define data structure.
  3. Final Answer:

    To specify the type of data each column will store in the database -> Option B
  4. Quick Check:

    Model fields = Data columns [OK]
Hint: Fields define data types in models, not views or templates [OK]
Common Mistakes:
  • Confusing fields with views or templates
  • Thinking fields handle user login
  • Assuming fields control page layout
2. Which of the following is the correct way to define a character field named title with a maximum length of 100 in a Django model?
easy
A. title = models.IntegerField(max_length=100)
B. title = models.TextField(max_length=100)
C. title = models.CharField(length=100)
D. title = models.CharField(max_length=100)

Solution

  1. Step 1: Identify correct field type and argument

    For text with length limit, CharField with max_length is correct.
  2. Step 2: Check syntax correctness

    TextField does not use max_length, IntegerField is for numbers, and CharField requires max_length, not length.
  3. Final Answer:

    title = models.CharField(max_length=100) -> Option D
  4. Quick Check:

    CharField + max_length = correct syntax [OK]
Hint: Use CharField with max_length for short text fields [OK]
Common Mistakes:
  • Using TextField with max_length
  • Using IntegerField for text
  • Writing length instead of max_length
3. Given the model definition below, what will be the default value of the is_active field for a new instance if not specified?
class User(models.Model):
    username = models.CharField(max_length=50)
    is_active = models.BooleanField(default=true)
medium
A. true
B. false
C. Raises an error
D. null

Solution

  1. Step 1: Check Python syntax for booleans

    In Python and Django, booleans are True and False (capitalized). true is undefined.
  2. Step 2: Model definition outcome

    Defining default=true raises NameError at model definition time, preventing instance creation.
  3. Final Answer:

    Raises an error -> Option C
  4. Quick Check:

    default=true -> NameError [OK]
Hint: Python/Django booleans: True/False (capitalized), not true/false [OK]
Common Mistakes:
  • Assuming default is true despite syntax error
  • Expecting null as default for BooleanField
  • Using lowercase true/false in default
4. Identify the error in the following Django model field definition:
class Product(models.Model):
    price = models.DecimalField(max_digits=5, decimal_places=2, max_length=10)
medium
A. DecimalField does not accept max_length argument
B. max_digits should be less than decimal_places
C. DecimalField requires a default value
D. Field name 'price' is a reserved keyword

Solution

  1. Step 1: Check DecimalField arguments

    DecimalField accepts max_digits and decimal_places, but not max_length.
  2. Step 2: Validate argument usage

    Including max_length causes a syntax error because it's invalid for DecimalField.
  3. Final Answer:

    DecimalField does not accept max_length argument -> Option A
  4. Quick Check:

    DecimalField = max_digits + decimal_places only [OK]
Hint: DecimalField uses max_digits and decimal_places, not max_length [OK]
Common Mistakes:
  • Adding max_length to DecimalField
  • Mixing max_digits and decimal_places values incorrectly
  • Assuming field names are reserved keywords
5. You want to create a Django model BlogPost with a title (max 200 chars), content (unlimited text), and a published date that can be empty. Which of the following is the best model definition?
hard
A. class BlogPost(models.Model):\n title = models.CharField(max_length=200)\n content = models.TextField()\n published_date = models.DateTimeField(blank=True, null=True)
B. class BlogPost(models.Model):\n title = models.TextField(max_length=200)\n content = models.CharField()\n published_date = models.DateTimeField()
C. class BlogPost(models.Model):\n title = models.CharField(max_length=200, blank=true)\n content = models.TextField()\n published_date = models.DateTimeField()
D. class BlogPost(models.Model):\n title = models.CharField(max_length=200)\n content = models.TextField()\n published_date = models.DateTimeField(default='')

Solution

  1. Step 1: Match field types to requirements

    Title needs limited length, so CharField(max_length=200) is correct. Content is unlimited text, so TextField fits.
  2. Step 2: Allow published_date to be empty

    To allow empty dates, use blank=True and null=True on DateTimeField.
  3. Step 3: Check other options for errors

    class BlogPost(models.Model):\n title = models.TextField(max_length=200)\n content = models.CharField()\n published_date = models.DateTimeField() misuses TextField with max_length and swaps content types. class BlogPost(models.Model):\n title = models.CharField(max_length=200, blank=true)\n content = models.TextField()\n published_date = models.DateTimeField() does not allow empty published_date. class BlogPost(models.Model):\n title = models.CharField(max_length=200)\n content = models.TextField()\n published_date = models.DateTimeField(default='') uses invalid default for DateTimeField.
  4. Final Answer:

    Correct field types with blank and null for published_date -> Option A
  5. Quick Check:

    CharField + TextField + DateTimeField(blank=True, null=True) [OK]
Hint: Use blank=true and null=true to allow empty date fields [OK]
Common Mistakes:
  • Using TextField with max_length
  • Not allowing null for optional DateTimeField
  • Setting invalid default values for DateTimeField
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard