장고 특정 사용자가 작성한 게시물 개수 세기

소요 시간: 5분

오늘은 Django 프레임워크에 대해 더 깊이 이해하기 위해 공부했다. Django는 웹 애플리케이션을 개발할 때 매우 유용한 도구라는 걸 새삼 느꼈다. 특히 모델을 사용하여 데이터베이스와 상호작용하는 방법이 흥미로웠다. 모델은 데이터의 구조를 정의하고, ORM(Object-Relational Mapping)을 통해 SQL을 직접 작성하지 않고도 데이터베이스에 접근할 수 있도록 도와준다.

이번 프로젝트에서 나는 특정 사용자가 작성한 글의 개수를 세는 기능을 구현하기로 했다. 이 기능은 사용자 프로필에 포함된 게시물 수를 쉽게 확인할 수 있게 해줄 것이다.


모델 설계와 구현

어제 공부한 내용을 바탕으로 모델을 설계했다. 사용자 프로필을 위한 Profile 모델을 만들기로 했다. 이 모델에는 사용자의 정보를 저장할 뿐만 아니라, 사용자가 작성한 글의 개수를 세는 메소드도 포함할 예정이다. 다음은 내가 작성한 코드이다:

class Profile(models.Model):
    # ... 생략 ...
    
    def count_posts(self):
        return Post.objects.filter(user=self.user).count()

이 메소드는 Post 모델에서 현재 프로필과 연관된 사용자의 글을 필터링하여 그 개수를 반환한다. 코드 작성이 끝나고, 이 방법이 정말로 제대로 작동할지 궁금해졌다.


데이터베이스와의 연결

오늘은 작성한 모델을 실제 데이터베이스와 연결하는 작업을 했다. Django의 migrations를 사용해 데이터베이스를 업데이트하고, Profile 모델을 생성했다.

이제 데이터베이스에 몇 개의 프로필과 게시물을 추가하고, count_posts 메소드를 통해 특정 사용자의 게시물 수를 확인해보기로 했다. 데이터를 추가한 후, 사용자가 몇 개의 게시물을 작성했는지 출력해보니 기대했던 대로 정확한 개수가 나왔다. 너무 기뻤다!


기능 확장과 최적화

기본적인 기능을 성공적으로 구현했지만, 나는 추가적인 최적화가 필요하다고 생각했다. 예를 들어, 동일한 게시물의 개수를 세는 작업이 너무 자주 발생한다면 성능에 영향을 미칠 수 있다.

그래서 사용자 프로필의 인스턴스가 생성될 때마다 게시물 수를 미리 계산하여 저장해두는 방법을 고민해보았다. 이렇게 하면 데이터베이스에 대한 불필요한 접근을 줄일 수 있을 것이다.

아직은 이 방법을 구현하지 않았지만, 차후 프로젝트에서 시도해볼 생각이다.


회고

오늘 하루는 내 프로젝트에서 Profile 모델의 게시물 개수 세기 기능을 구현하고 테스트하는 데 집중했다. Django의 모델과 쿼리셋에 대한 이해가 깊어지면서 데이터베이스와의 상호작용이 훨씬 더 수월해졌다.

이제 다음 단계로는 사용자 인터페이스에서 이 정보를 어떻게 표시할 것인지 고민해야겠다. 사용자들이 자신의 게시물 수를 쉽게 확인할 수 있도록 UI/UX를 고려해야 할 것 같다. 앞으로도 이런 유용한 기능을 계속해서 추가해 나갈 예정이다.


장고 리스트