Bird
Raised Fist0
Djangoframework~10 mins

String representation with __str__ in Django - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a __str__ method that returns the name of the model instance.

Django
class Product(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.[1]
Drag options to blanks, or click blank then click option'
Aname
Bid
Cself
Dstr
Attempts:
3 left
💡 Hint
Common Mistakes
Returning self.id instead of self.name
Returning self without converting to string
Using a method name other than __str__
2fill in blank
medium

Complete the code to return a formatted string showing the user's full name.

Django
class User(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

    def __str__(self):
        return f"[1] [2]"
Drag options to blanks, or click blank then click option'
Aself.first_name
Bfirst_name
Cself.last_name
Dlast_name
Attempts:
3 left
💡 Hint
Common Mistakes
Using variable names without self
Swapping first_name and last_name
3fill in blank
hard

Fix the error in the __str__ method to correctly return the email attribute.

Django
class Contact(models.Model):
    email = models.EmailField()

    def __str__(self):
        return [1]
Drag options to blanks, or click blank then click option'
Aemail
Bstr.email
Cself.email()
Dself.email
Attempts:
3 left
💡 Hint
Common Mistakes
Using email without self
Calling self.email as a function
4fill in blank
hard

Fill both blanks to return a string combining title and year attributes.

Django
class Movie(models.Model):
    title = models.CharField(max_length=100)
    year = models.IntegerField()

    def __str__(self):
        return f"[1] ([2])"
Drag options to blanks, or click blank then click option'
Aself.title
Bself.year
Ctitle
Dyear
Attempts:
3 left
💡 Hint
Common Mistakes
Using attribute names without self
Swapping title and year
5fill in blank
hard

Fill all three blanks to return a string showing full name and email.

Django
class Employee(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    email = models.EmailField()

    def __str__(self):
        return f"[1] [2] <[3]>"
Drag options to blanks, or click blank then click option'
Aself.first_name
Bself.last_name
Cself.email
Demail
Attempts:
3 left
💡 Hint
Common Mistakes
Using attribute names without self
Using email without self
Swapping order of attributes

Practice

(1/5)
1. What is the main purpose of defining a __str__ method in a Django model?
easy
A. To create a new database migration
B. To define the database table name
C. To set default values for model fields
D. To provide a readable string representation of the model instance

Solution

  1. Step 1: Understand the role of __str__ in Django models

    The __str__ method returns a string that describes the model instance clearly and simply.
  2. Step 2: Identify what __str__ does not do

    It does not affect database table names, migrations, or default field values.
  3. Final Answer:

    To provide a readable string representation of the model instance -> Option D
  4. Quick Check:

    Purpose of __str__ = readable string [OK]
Hint: Think: How do I want to see this object as text? [OK]
Common Mistakes:
  • Confusing __str__ with database schema settings
  • Using __str__ to set default field values
  • Thinking __str__ creates migrations
2. Which of the following is the correct way to define a __str__ method in a Django model?
easy
A. def __str__(self): return self.name
B. def str(self): return self.name
C. def __str__(self): print(self.name)
D. def __string__(self): return self.name

Solution

  1. Step 1: Recall the exact method name and return type

    The method must be named __str__ and return a string, not print it.
  2. Step 2: Check each option for correctness

    def __str__(self): return self.name correctly defines __str__ and returns self.name. Others have wrong names or use print instead of return.
  3. Final Answer:

    def __str__(self): return self.name -> Option A
  4. Quick Check:

    Correct method name and return string = def __str__(self): return self.name [OK]
Hint: Remember: __str__ must return a string, not print it [OK]
Common Mistakes:
  • Using print instead of return inside __str__
  • Misspelling __str__ method name
  • Defining __string__ or str instead of __str__
3. Given this Django model:
class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)

    def __str__(self):
        return f"{self.title} by {self.author}"

book = Book(title='Django Basics', author='Anna')
print(str(book))
What will be printed?
medium
A. Book object (None)
B. Django Basics
C. Django Basics by Anna
D.

Solution

  1. Step 1: Understand the __str__ method output

    The __str__ method returns a formatted string combining title and author.
  2. Step 2: Check what print(str(book)) outputs

    It calls the __str__ method, so it prints "Django Basics by Anna" exactly.
  3. Final Answer:

    Django Basics by Anna -> Option C
  4. Quick Check:

    __str__ output = printed string [OK]
Hint: print(str(object)) shows __str__ return value [OK]
Common Mistakes:
  • Expecting default object representation instead of __str__ output
  • Confusing __repr__ with __str__ output
  • Ignoring f-string formatting in __str__
4. What is wrong with this __str__ method in a Django model?
def __str__(self):
    print(self.name)
medium
A. It should return a string, not print it
B. The method name is incorrect
C. It should raise an exception
D. It should be a class method

Solution

  1. Step 1: Check the method's behavior

    The method uses print instead of returning a string, so it returns None by default.
  2. Step 2: Understand the expected __str__ behavior

    __str__ must return a string to represent the object, not print it.
  3. Final Answer:

    It should return a string, not print it -> Option A
  4. Quick Check:

    __str__ must return string [OK]
Hint: Always return a string in __str__, never print [OK]
Common Mistakes:
  • Using print instead of return
  • Misnaming the method
  • Making __str__ a class method
5. You have a Django model with fields first_name and last_name. You want the admin and print statements to show the full name. Which __str__ method correctly achieves this and handles missing names gracefully?
hard
A. def __str__(self): return self.first_name + ' ' + self.last_name
B. def __str__(self): return f"{self.first_name or ''} {self.last_name or ''}".strip()
C. def __str__(self): return self.first_name if self.first_name else self.last_name
D. def __str__(self): print(f"{self.first_name} {self.last_name}")

Solution

  1. Step 1: Analyze each option for handling missing names

    def __str__(self): return self.first_name + ' ' + self.last_name concatenates directly, which can cause errors if either is None. def __str__(self): return f"{self.first_name or ''} {self.last_name or ''}".strip() uses or '' to avoid None and strips extra spaces. def __str__(self): return self.first_name if self.first_name else self.last_name only returns one name, not full name. def __str__(self): print(f"{self.first_name} {self.last_name}") uses print instead of return.
  2. Step 2: Choose the option that returns full name safely

    def __str__(self): return f"{self.first_name or ''} {self.last_name or ''}".strip() returns a full name string, handles missing values, and returns a clean string.
  3. Final Answer:

    def __str__(self): return f"{self.first_name or ''} {self.last_name or ''}".strip() -> Option B
  4. Quick Check:

    Safe full name string return = def __str__(self): return f"{self.first_name or ''} {self.last_name or ''}".strip() [OK]
Hint: Use or '' and strip() to handle missing fields in __str__ [OK]
Common Mistakes:
  • Concatenating without checking for None
  • Using print instead of return
  • Returning only one field instead of full name
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