Skill: Implement Django Feature
1. Domain Modeling (The Foundation)
Always start here.
- •Create/Update
models.py. - •Enforce
id = models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True). - •Add
created_atandupdated_at(TimeStamped). - •Define
__str__method.
2. Business Logic Layer
Do not put heavy logic in Views.
- •Create a
services.pyorselectors.pyin the app. - •
selectors.py: For fetching data (QuerySets, filtering). - •
services.py: For writing data (Transactions, complex creates).
3. API Interface (DRF)
- •Serializer:
- •Use
ModelSerializerby default. - •Explicitly list
fields(or usefields = '__all__'only for prototyping).
- •Use
- •View:
- •Use
rest_framework.genericsorviewsets. - •Apply
permission_classes. - •Apply
filter_backends(DjangoFilterBackend, SearchFilter).
- •Use
- •URL:
- •Register in
urls.py. Use the router if using ViewSets.
- •Register in
4. Admin Panel
- •Don't forget
admin.py. - •Use
@admin.register(Model). - •Define
list_display,search_fields,list_filter.
5. Testing
- •Create a test file
tests/test_[feature].py. - •Implement user happy path (201 Created / 200 OK).