Hari is building a Django application for an e-commerce platform. He needs to create Product, PhysicalProduct, and DigitalProduct models where PhysicalProduct has fields like weight and shipping_cost, while DigitalProduct has fields like file_size and download_url. Both inherit common fields like name, price, and description from Product. Which inheritance strategy should Hari use?
Django Model Inheritance Strategy Selection
Abstract base class inheritance, because it allows shared fields to be defined once and avoids creating unnecessary database tables while each child model gets its own complete table with all inherited fields.
Proxy model inheritance, because it allows multiple model classes to operate on the same database table with different managers.
Multi-table inheritance, because it automatically handles all field inheritance without requiring abstract models.
Show answer & explanationAnswer
Correct answer
Abstract base class inheritance, because it allows shared fields to be defined once and avoids creating unnecessary database tables while each child model gets its own complete table with all inherited fields.
Explanation
Multi-table inheritance creates separate database tables for parent and child models with automatic joins, suitable when child models have unique fields. Abstract base classes don't create tables and are used for shared functionality.
All 30 Django Models and Database Design questions
- 1.What is the primary purpose of Django Models?
- 2.Which field type should be used to store an email address in a Django Model?
- 3.What does the Meta class inside a Django Model do?
- 4.Which relationship type is used when one model can have many instances of another model?
- 5.What is the purpose of the `__str__` method in a Django Model?
- 6.Which field attribute makes a field mandatory in Django Models?
- 7.What does the `on_delete` parameter do in a ForeignKey relationship?
- 8.Which of the following is a valid Django field type for storing boolean values?
- 9.What is the default behavior when you don't specify `null=True` for a field in Django?
- 10.Which method is used to retrieve a single object from the database in Django?
- 11.Understanding Django Model Meta Options
- 12.Scenario:
- 13.Django QuerySet Filter vs Get Method
- 14.Coding:
- 15.Scenario:
- 16.Understanding Django Model Inheritance
- 17.Coding:
- 18.Scenario:
- 19.Django Model Manager and QuerySet Methods
- 20.Coding:
- 21.Django Model Inheritance Strategy Selection
- 22.Django QuerySet Optimization with select_related vs prefetch_related
- 23.Django Model Field Choices and Validation
- 24.Django Model Relationships:
- 25.Django Model Signals and Database Consistency
- 26.Django Model Meta Options:
- 27.Django Model Managers and Custom QuerySets
- 28.Django Model Field:
- 29.Django Model Validation:
- 30.Django Model Aggregation and Annotation
