요고 입력해야지 아래 명령들을 실행할 수 있다.
만약 python이나 terminal을 끄고 다시 킨다면 다시 입력해줘야 한다.
<QuerySet [<Product: Product object (1)>, <Product: Product object (2)>, <Product: Product object (3)>]>
<Product: Product object (1)>
Product.objects.filter(id=1)
<QuerySet [<Product: Product object (1)>]>
<Product: Product object (1)>
coffee
<Product: Product object (1)>
1번 name 변경하기
예시1)
Product.objects.filter(id=1).update(name='ice')
(id=1 대신 name='coffee'를 입력해도 된다.)
예시2) 또는, 객체를 변수에 담아서 수정
a1 = Product.objects.get(id=1).name
a1.name = ice
1 <-- True(성공적으로 바뀜, 0일 경우는 실패했다는 의미)
변수 객체 전체를 변수에 담을 경우
get
,filter
둘다 가능하다.
a2 = Product.objects.get(id=1)
a2 = Product.objects.filter(id=1)
1
1
행 전체삭제
Product.objects.get(id=1).delete()
Product.objects.filter(id=1).delete()
동일한 값들 삭제
Product.objects.get(price=100).delete()
위에 테이블에 price=100이 3개가 있기 때문에 삭제되지 않는다.
만약 price=100짜리를 전부 삭제하고 싶다면,
Product.objects.filter(price=100).delete()
⛔️주의:
Project.objects.filter().delete() == Proejct.obejcts.all().delete
필터에 아무값도 넣지 않는다면, 테이블 전체가 삭제된다.
테이블에서 특정 부분을 비워두고 싶다면 update()로 None 또는 ''로 해야한다.
조건: 모델링에서 필드값을 (null=True, blank=True)로 미리 지정되있어야 된다.
exclude()
,values()
,values_list()
,count()
,first()
,last()
,exists()
칼럼이름__isnull=True
: null로 되어 있는 값들 필터
칼럼이름__exact=''
: 공란으로 되어 있는 값들 필ㄹ터
칼럼이름__contains='coffee'
: 찾기
예시)
Product.objects.filter(name__isnull=True).exclude(description__exact='').count()
이름이 null & 설명란 공백인 테이블 count
Product.objects.exclude(name__isnull=True)
Product.objects.exclude(name__exact='')