반응형
Index |
1. Model 관계 |
2. Database 설정 |
3. Model 기본 관리자 |
4. Model 커스텀 관리자 |
5. 4 |
Reference |
1. Model 관계
Model 관계
- django.db.models
models.ForeignKey(to=모델, on_delete=models.CASCADE, related_name='blog_posts')
- to: 연결할 모델
- on_delete: 참조된 객체가 삭제될 때 선택할 수 있는 동작 지정.
- related_name: 모델끼리의 역방향 관계 명칭 지정
- 일대일 관계
- 일대다 관계
- 다대다 관계
2. Database 설정
Database 설정
- settings.py의 DATABASE 설정
3. Model 기본 관리자
Model 기본 관리자
- 기본 관리자 objects를 통해 QuerySet 객체를 반환
- Django의 Queryset은 lazy 특성을 가지고 있어 필요할 때만 실행
- Queryset 평가 시점: Queryset 첫 반복시 / pickle 또는 캐시할 때 / 명시적으로 list() 호출 / 명령문에서 체크할 경우
from .models import 모델
# 객체 생성
변수 = 모델()
# 객체 생성후 DB 저장
모델.objects.create(필드=...)
# 객체 수정
변수.필드 = '값'
# DB 반영
변수.save()
# 객체 삭제
변수 = 모델.objects.get(조건)
변수.delete()
- 객체 조회
# 전체 객체 반환
모델.objects.all()
# 단일 객체 탐색
모델.objects.get(조건)
- 실패시 DoseNotExist 예외 발생
- 둘 이상 반환시 MultipleObjectReturned 예외 발생
# 필터링
모델.objects.filter(조건).filter(조건)
- 룩업 메서드가 있는 쿼리는 필드__필드 형태로 작성
# 특정 결과 제외
모델.objects.filter(조건).exclude(조건)
# 정렬 결과 반환
모델.objects.order_by('필드')
4. Model 커스텀 관리자
Model 커스텀 관리자
- 기본 관리자에 관리자 메서드를 추가
- 관리자가 반환하는 초기 QuerySet 수정하여 새로운 관리자를 생성
- get_queryset() 메서드에 overriding하여 커스텀 QuerySet 지정
from django.db import models
class 필드Manager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(조건)
class 모델명(models.Model):
관리자명 = 필드Manager()
5.
Reference
[Text: Django(Model Field Foreign Key)] https://docs.djangoproject.com/en/5.0/ref/models/fields/#foreignkey |
[Text: Django(Model)] https://docs.djangoproject.com/en/5.0/topics/db/models/ |
반응형
'Web Framework > Django' 카테고리의 다른 글
[Django] View (0) | 2024.04.22 |
---|---|
[Django] Admin (0) | 2024.04.22 |
[Django] Model 및 Database 1 (0) | 2024.04.21 |
[Django] Project 및 Application (0) | 2024.04.21 |
[Django] Django 개요 및 환경 설정 (0) | 2024.04.21 |