class Article(models.Model):
title = models.CharField(max_length=10)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
__str__
에 관련된 설명#아티클 클래스의 모든 데이터 조회
In [3]: Article.objects.all()
#쿼리셋 형태로 반환
Out[3]: <QuerySet []>
#artilce 인스턴스 선언
article=Article()
#article의 제목은 first
In [5]: article.title='first'
#article의 내용은 first_content
In [6]: article.content='first_content'
#article 객체 조회
In [7]: article
Out[7]: <Article: first>
#객체 저장
In [9]: article.save()
#article 클래스의 데이터 조회
In [10]: Article.objects.all()
Out[10]: <QuerySet [<Article: first>]>
#article에 제목과 내용 입력
In [13]: article = Article(title='second',content='second_content')
In [14]: article
Out[14]: <Article: second>
#저장
In [15]: article.save()
#조회
In [16]: Article.objects.all()
Out[16]: <QuerySet [<Article: first>, <Article: second>]>
Article.objects.create(title='third',content='third_content')
Out[17]: <Article: third>
save() method
Saving objects
객체를 데이터베이스에 저장함
데이터 생성 시 save()를 호출하기 전에는 객체의 ID 값이 무엇인지 알 수 없음
단순히 모델을 인스턴스화 하는 것은 DB에 영향을 미치지 않기 때문에 반드시 save()가 필요
QuerySet API method를 사용해 다양한 조회를 하는 것이 중요
QuerySet API method는 크게 2가지로 분류
all()
In [18]: Article.objects.all()
Out[18]: <QuerySet [<Article: first>, <Article: second>, <Article: third>]>
#100번째 pk값을 반환
In [19]: article = Article.objects.get(pk=100)
DoesNotExist: Article matching query does not exist.
#내용이 first_content인 객체를 반환
In [21]: Article.objects.get(content='first_content')
Out[21]: <Article: first>
#내용이 first인 객체를 반환
IN [20]: Article.objects.get(content='first')
DoesNotExist: Article matching query does not exist.
In [25]: Article.objects.filter(content='first_content')
Out[25]: <QuerySet [<Article: first>]>
In [26]: article = Article.objects.get(pk=1)
In [27]: article.title = 'real_first'
In [28]: article.save()
In [29]: article.title
Out[29]: 'real_first'
In [30]: article = Article.objects.get(pk=3)
In [31]: article.delete()
Out[31]: (1, {'articles.Article': 1})
#pk가 1보다 큰 객체들 쿼리셋으로 조회
In [34]: Article.objects.filter(pk__gt=1)
Out[34]: <QuerySet [<Article: second>, <Article: forth>]>
#content가 들어있는 객체들 쿼리셋으로 조회
In [37]: Article.objects.filter(content__contains='content')
Out[37]: <QuerySet [<Article: real_first>, <Article: second>]>
https://docs.djangoproject.com/ko/4.0/ref/models/querysets/#queryset-api-reference