What is the purpose of list_display in Django admin?
The list_display attribute in Django admin defines which model fields are shown as columns in the admin list view. It helps customize the display of records for easier management.
Click to reveal answer
intermediate
How do you add a custom method to list_display in Django admin?
You define a method inside the admin class that returns a value, then add the method name as a string to <code>list_display</code>. This method can show computed or related data in the list view.
Click to reveal answer
beginner
True or False: You can include model fields and methods in list_display.
True. <code>list_display</code> can include both model fields and methods defined in the admin class to customize the columns shown.
Click to reveal answer
intermediate
What happens if you include a method in list_display that does not return a value?
If the method returns None or does not return anything, the column will appear empty in the admin list view. Always return a string or value to display.
Click to reveal answer
advanced
How can you make a column in list_display sortable?
To make a column sortable, the field or method name in list_display should correspond to a model field or have an admin_order_field attribute set to a model field name.
Click to reveal answer
What does list_display control in Django admin?
AWhich fields are editable in the form
BWhich fields show as columns in the list view
CWhich models are registered
DWhich users can access admin
✗ Incorrect
list_display controls the columns shown in the admin list view for a model.
How do you add a custom column using a method in list_display?
AAdd the method name as a string in <code>list_display</code>
BAdd the method as a decorator
COverride the model's <code>__str__</code> method
DAdd the method to the model's Meta class
✗ Incorrect
You add the method name as a string in list_display inside the admin class.
Which of these is NOT a valid list_display entry?
AA model field name
BA method name in the admin class
CA random string not matching any field or method
DA callable returning a value
✗ Incorrect
Entries must be model fields, admin methods, or callables. Random strings cause errors.
How can you make a method column sortable in list_display?
AUse <code>list_filter</code> instead
BMake the method static
CReturn a number from the method
DSet <code>admin_order_field</code> on the method
✗ Incorrect
Setting admin_order_field on the method links it to a model field for sorting.
If a method in list_display returns None, what will you see in the admin list?
AAn empty column cell
BAn error message
CThe method name displayed
DThe default field value
✗ Incorrect
Returning None results in an empty cell in the list view.
Explain how to customize the columns shown in Django admin list view using list_display.
Think about what you want to see in the table of records.
You got /4 concepts.
Describe how to make a custom method column sortable in Django admin list display.
Sorting needs a connection to a real model field.
You got /4 concepts.
Practice
(1/5)
1. In Django admin, what does the list_display attribute control?
easy
A. Which fields or methods appear as columns in the admin list view
B. The order of models in the admin site
C. The fields editable in the admin form
D. The database table names for models
Solution
Step 1: Understand the purpose of list_display
The list_display attribute in Django admin defines which model fields or methods are shown as columns in the list view of the admin interface.
Step 2: Differentiate from other admin attributes
Other attributes like ordering control order, fields control form fields, and database table names are unrelated to list_display.
Final Answer:
Which fields or methods appear as columns in the admin list view -> Option A
Quick Check:
list_display = columns shown [OK]
Hint: Remember: list_display = columns in admin list view [OK]
Common Mistakes:
Confusing list_display with ordering or form fields
Thinking list_display changes database schema
Assuming list_display controls permissions
2. Which of the following is the correct way to set list_display in a Django admin class?
easy
A. list_display = 'field1, field2, method_name'
B. list_display = (field1, field2, method_name)
C. list_display = {'field1', 'field2', 'method_name'}
D. list_display = ['field1', 'field2', 'method_name']
Solution
Step 1: Identify the correct data type for list_display
The list_display attribute expects a list or tuple of strings naming fields or methods. Both list and tuple are valid, but list is most common.
Step 2: Analyze each option's syntax
list_display = ['field1', 'field2', 'method_name'] uses a list with square brackets and strings, which is correct. list_display = (field1, field2, method_name) uses tuple syntax but lacks quotes around the names, treating them as undefined variables (NameError). list_display = {'field1', 'field2', 'method_name'} uses a set, which is unordered and invalid here. list_display = 'field1, field2, method_name' is a string, which is incorrect.
Final Answer:
list_display = ['field1', 'field2', 'method_name'] -> Option D
Quick Check:
list_display uses list syntax [OK]
Hint: Use square brackets for list_display fields [OK]
Common Mistakes:
Using a string instead of a list or tuple
Using a set which is unordered
Forgetting quotes around field names
3. Given this Django admin code snippet, what columns will appear in the admin list view?
A. Columns: name, price, discounted_price but discounted_price shows an error
B. Columns: name, price only; discounted_price is ignored
C. Columns: name, price, discounted_price showing name, price, and 90% of price
D. Only discounted_price column appears
Solution
Step 1: Understand list_display with methods
The list_display includes 'discounted_price', which is a method defined in the admin class. Django calls this method for each object to show the computed value.
Step 2: Analyze the method's return value
The method returns 90% of the product's price, so the column will show the discounted price correctly.
Final Answer:
Columns: name, price, discounted_price showing name, price, and 90% of price -> Option C
Quick Check:
Method in list_display shows computed column [OK]
Hint: Methods in list_display show computed columns [OK]
A. calculate_tax should be a property, not a method
B. The method calculate_tax is missing the obj parameter
C. total_price is not a valid field
D. list_display should not include methods
Solution
Step 1: Check method signature for list_display methods
Methods used in list_display must accept the model instance as the first parameter, usually named obj. Here, calculate_tax has no parameters, so it will cause an error.
Step 2: Confirm other options
Methods can be in list_display, total_price is assumed valid, and methods do not have to be properties.
Final Answer:
The method calculate_tax is missing the obj parameter -> Option B
Quick Check:
list_display methods need obj parameter [OK]
Hint: list_display methods must accept obj parameter [OK]
Common Mistakes:
Defining method without obj parameter
Thinking methods can't be in list_display
Confusing method with property decorator
5. You want to show a custom column in Django admin that displays 'Yes' if a product's stock is above 0, otherwise 'No'. Which is the correct way to add this to list_display?
hard
A. Define a method in admin: def in_stock(self, obj): return 'Yes' if obj.stock > 0 else 'No' and add 'in_stock' to list_display
B. Add 'in_stock' to list_display without defining a method
C. Override the model's __str__ method to return 'Yes' or 'No'
D. Use a property on the model named in_stock
Solution
Step 1: Create a method in admin for custom display
To show a custom column based on logic, define a method in the admin class that takes self and obj and returns the desired string.
Step 2: Add the method name as a string to list_display
Adding the method name to list_display tells Django to call it for each row and show the result.
Final Answer:
Define a method in admin: def in_stock(self, obj): return 'Yes' if obj.stock > 0 else 'No' and add 'in_stock' to list_display -> Option A
Quick Check:
Custom columns need admin methods + list_display [OK]
Hint: Custom columns need admin methods and list_display entry [OK]
Common Mistakes:
Adding method name without defining it
Trying to use model __str__ for columns
Assuming properties on model auto-show in list_display
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.