본문 바로가기

웹개발/django5

[Django] fk의 field를 filtering 하기 (ORM) 검색을 해야 하는데 단순히 model이 포함하고 있는 field만 filtering 가능한 줄 알고 여지껏 노가다(?)를 했던 나 자신을 반성하며 쓰는 글... 내가 SQL을 배웠다면 진작 알았을 텐데 미뤄놨던 SQL 공부도 시작해봐야겠다 ㅠㅠ filter가 SQL에서 어떤식으로 구현되는지에 대해 적혀있는 글들을 많이 보기는 했었는데 SQL 구문을 모르니 항상 그냥 그렇구나 하고 넘어가기만 했었다. 근데 SQL에서는 fk들을 다 저장(?)해두고 있었던 것...! 이제부터 댓글들 중에서 특정 휴대폰번호를 가진 유저가 작성한 글에 대한 댓글들만 filtering을 해보자 models.py는 다음과 같다 class User(AbstractBaseUser, PermissionsMixin): user_name =.. 2022. 1. 31.
[Django] makemigrations 취소하기, migrate 취소하기 1. 먼저 터미널에서 다음 명령어를 입력하여 migration현황을 확인한다 python manage.py showmigrations 그럼 다음과 같이 app들에 대해 진행된 migration목록이 나열된다. account [X] 0001_initial [ ] 0002_newuser account : app name [X] : 이미 migrate 되어 적용됐다는 뜻 [ ] : 아직 migrate가 진행되지 않았다는 뜻 1-1. [ ] 로 아직 migrate가 진행되지 않은 경우 앱 내부에 있는 migrations 폴더에 들어가서 삭제하고자 하는 migrations 파일을 전부 삭제해주자 1-2. [X]로 이미 migrate가 반영된 경우 migration을 취소해준 뒤에 삭제를 진행해주어야 한다. pyt.. 2021. 10. 21.
django urls.py에서 views 함수 호출할 때 인자 전달하기 urls.py에서 url을 작성할 때 뒤쪽에 실행될 views의 함수를 적음으로써 그 함수가 실행되도록 할 수 있다. 이때 url을 통해 받은 내용을 함수로 전달해줄 수도 있다. 예를 들어 post라는 app안에서 url의 뒤쪽에 /20 이라고 주소창에 치면 20을 이용한 함수가 실행되도록 하고자 한다면 path('/',views.post_detail), 이때 는 a라는 인자를 views.py안에 있는 post_detail이라는 함수에 전달할 예정인데 인수의 이름은 a이고 type은 int라는 것을 의미한다. 그리고 views.py의 post_detail에는 def post_detail(request:HttpRequest, a:int): return HttpResponse(f"{a}") }) 라고 작성한.. 2020. 9. 16.
on_delete 에 관하여 항상 dafault값으로 쓰다가 다른 것을 쓰려고 하니 헷갈렸다. 흔하게 쓰이는 것인데도 잘 모르고 있는 것 같아서 공부할겸 정리해보았다. user 과 post의 관계를 1:n 이다. user가 여러개의 post를 작성하므로 user가 1 post 가 n인 1:n 관계가 성립한다. class USER(models.Model): name = models.CharField(max_length=10) class POST(models.Model): user = models.ForeignKey(USER, on_delete=models.CASCADE) context = models.TextField() 다음과 같이 작성할 수 있다. 이때 on_delete는 1:n의 관계에서 1이 사라지는 경우 n을 어떻게 처리할지.. 2020. 9. 13.