django admin에서 search_fields에 대해 간단하게 알아보겠습니다. 저는 db를 sqlite를 사용하였습니다. search_fields는 search box를 enable 시키게 되는데요. 7번째 줄에 보면 "content"가 적혀있습니다. 이는, "content"에 대해 무언가를 검색하는 검색창을 활성화 시킵니다. 앞에 =이라던지 ^가 붙지 않았기 때문에 icontains 옵션으로 동작하게 됩니다. chokw를 검색해 보겠습니다. 그랬더니, chokw가 포함된 포스트가 검색됩니다. 중요한 것은 content가 "chokw"였던 것 뿐만이 아니라, "my name is chokw"인 것도 같이 결과에 나왔다는 것입니다. "is"를 검색해 봅시다. 그러면 "my name is chokw"인..
웹/장고 검색 결과
수많은 데이터를 한꺼번에 추가하려면 어떻게 해야 할까요? 특히 queryset의 성능을 실험할 때 거대한 데이터를 넣어야 할 일이 의외로 있는데요. 매 루프마다 create를 호출하면 상당히 느릴 겁니다. 이 때, 쓸 수 있는 것은 bulk_create입니다. 말 그대로, 일정 묶음 단위로 추가를 할 수 있습니다. 자세한 것은 문서를 보시면 되겠습니다. 이 글에서는 간단하게 bulk_create가 무엇인지 정도만 짚고 넘어갑니다. 예제의 모델들은 아래와 같이 정의되어 있습니다. 먼저 Profile의 user는 django의 기본 모델인 User의 fk입니다. 다음에 blocked는 block 유저를 관리하기 위한 m2m field입니다. 실제로 postgres 디비에는 block 유저를 관리하는 mapp..
django에서 m2m (many to many field)를 쓰는 경우는 흔합니다. 이 필드는 mapping table을 생성하는데요. 이 mapping table에서 filter를 어떻게 거는지 간단하게 알아봅시다. 먼저, post에 좋아요 기능을 추가하려고 합니다. 유저 1명은 여러 포스트에 좋아요를 누를 수 있고, 포스트 하나도 유저 여러 명이서 좋아요를 받을 수 있습니다. 즉, post와 user는 다대다 관계인 셈입니다. 그래서, Post model은 아래와 같이 바꿀 수 있습니다. 보시면, like가 걸려 있는데, Post와 User간 Many to Many로 연결됨을 의미합니다. 실제로, migrate를 하고 나서, 몇 개의 좋아요 데이터를 추가했습니다. 새로 생성된 테이블을 보면 아래와 ..
장고에서 유저의 비밀번호를 어떻게 설정해야 할까요? 비밀번호는 평문으로 저장되면 안 됩니다. 그렇기 때문에, set_password 라는 별도의 함수를 제공합니다. 이 글에서는 암호화 방식에 대한 상세한 설명을 다루지 않습니다. 먼저 사용법부터 봅시다. auth.models에 붙어 있는 User를 쓰는 경우, 비밀번호를 셋팅할 User 계정을 불러옵니다. 저는 "admin"이라는 유저 이름을 가진 유저를 filter와 get을 이용해서 불러왔습니다. 다음에 set_password 함수로 새롭게 설정할 raw_password를 넣습니다. 다음에, 반영하기 위해, user.save()를 해서 실제 데이터 베이스에 넣습니다. 사용법은 어렵지 않습니다. 이제, 어떤 식으로 동작하는지 간단하게만 보겠습니다. 메타..
이번 시간에는 django의 Q object로 복잡한 filter를 조금 깔끔하게 작성하는 방법을 알아보겠습니다. 물론, 문서에 예제가 매우 잘 나와 있긴 합니다. 먼저, 데이터는 요래 있습니다. 작성자가 "alpha"인 사람은 "beta"라는 내용의 포스트를 썼고, 작성자가 "admin"인 유저는 "alpha" 라는 내용의 포스트를 썼습니다. 여기까지 보면 별로 어려울 게 없어 보입니다. 자. 그런데, 어떠한 정보를 얻어올 때, 쿼리 파라미터가 여러개 들어오는 것은 보통입니다. 예를 들어 네이버에 "코딩테스트" 를 검색하고 view 탭만 봐도 query parameter가 상당히 많음을 볼 수 있어요. 이런 것을 어떻게 깔끔하게 처리할까요? 문제 상황이 이해가 가셨으리라 생각됩니다. 저는 post의 유..
최근댓글