SKILL.md
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
createdatandupdatedat(TimeStamped). - Define
strmethod.
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 ModelSerializer by default. - Explicitly list fields (or use fields = 'all' only for prototyping).
- View:
- Use restframework.generics or viewsets. - Apply permissionclasses. - Apply filter_backends (DjangoFilterBackend, SearchFilter).
- URL:
- Register in urls.py. Use the router if using ViewSets.
4. Admin Panel
- Don't forget
admin.py. - Use
@admin.register(Model). - Define
listdisplay,searchfields,list_filter.
5. Testing
- Create a test file
tests/test_[feature].py. - Implement user happy path (201 Created / 200 OK).