Q 객체로 구현했고,
# filter 시, 포린키의 value 조회 방법
# annotate, Concat 으로 필드 결합
1) 특정 기간 :
Q(d_date1__range=[start, end]
2) 여러 필드를 하나의 문자열로 합친 후, '검색어'가 포함돼있는지 조회.
............annotate(xxx = Concat('a__name', 'b', 'c'))..............
- 상품기초코드 + 항공사코드 + 접미코드 필드를 합쳐서, '키워드'가 들어있는지?
- 포린키의 실제 필드값을 조회 : 'basic_code__basic_code'
from django.db.models.functions import Concat
from django.db.models import CharField, Value
qs = TourItem.objects.annotate(xxx=Concat('basic_code__basic_code', 'air_code','suffix_code')).filter(Q(d_date1__range=[start, end]) & (Q(xxx__icontains=keyword) | Q(title__icontains=keyword)))
코드(조합 필드)를 왜 xxx 에 담았나?
여러 필드를 합친 필드를 admin 에서 보여주기 위해, 모델에 메서드를 추가했는데, 이름이 같아서 오류가 생겼다.
AttributeError: can't set attribute
필드처럼 사용할 목적으로 메서드를 만들었고, 이 필드로 쿼리를 수행할 수 있을거라 기대했는데, 안됐다.(방법을 못찾았다?)
@property
def item_code(self):
day_code = self.d_date1.strftime("%Y%m%d")
basic_code = self.basic_code.basic_code
air_code = self.air_code
code_suffix = self.suffix_code
full_code = (day_code+basic_code+air_code+code_suffix)
return full_code
결국, 정석대로 쿼리 수행시, Concat 으로 처리했다.
3) 쿼리 결과 화면에 뿌려주기 - 대쉬보드 스타일 :
- 부트스트랩 페이지. 페이지네이션, 필터 등이 제공되고, 한번의 쿼리 후, 필터를 사용할 수 있다는 장점.
- table2 : 필드명 클릭할 때마다, 쿼리를 수행. 익혀야할 것이 많아서, 글쎄...?
ListView 상속 ( 한 화면에서 처리하기 위해서는 Form 처리 필요한 것을 감안하면, 글쎄? 사용할 이유가 지금은 안보인다.)
누가 장고 쉽다 했냐............ 하.........
간단한 블로그 만들기나 쉽지... 아호.
4) 검토
이런거 뭐 없나? 하고 검색하면서 시간이 너무 많이 소요되고 있다.
이 문제로 상당한 시간이 소요됐다... 뭐 복합기긴 하지만 ㅠ
- 구글링 했을 때, 사례가 잘 안나오는 거 보면, 잘 사용하지 않는 방법인 것 같다. ㅠ 로직이 쓸데없이 복잡할 가능성이 높다. 못하니까, 생각나는대로 하는거지. 쉐도우 복싱 그만하고, 직접 해보기로 했으니까... 답답해도 가즈아
중급 강좌로 쇼핑몰 강의를 한번 들어야 빨라지지 않을까 싶다.
- 애매하게 모르는 중급 팁 들만 빠르게 살펴봐야할 것 같다.
- 디자인 레이아웃 잡는 것이 약점이므로, 프로젝트 강좌를 여러개 봐야겠다.
'erp 도전' 카테고리의 다른 글
장고 마이그레이션 에러 / 복구 showmigrations (0) | 2023.04.26 |
---|---|
일정표 구현 3: 조/중/석 구분값으로 저장, 사용하기 (0) | 2023.04.25 |
일정표 구현2) : 공유 일정표와 개별 일정표 구현 (0) | 2023.04.24 |
일정표 구현 1) tinymce (0) | 2023.04.24 |
장고 필터 django-filter (0) | 2023.04.22 |
table2 테이블 모듈 (0) | 2023.04.22 |
장고 여행사 재고관리 도전 1 (4/14-4/20) (0) | 2023.04.21 |
장고 ... 재도전 ( 2023. 3.26 ~ 4.13 ) (0) | 2023.04.21 |
댓글