반응형
오늘은 데이터 가공 후 템플릿에 뿌려야 하는 사안인데 각 모델에 조건에 맞게 데이터를 가공하여 뿌려줘야 해서 고된 작업이 있었다. 굳이 Pandas를 써야하나? 했지만 df를 사용할시 데이터 가공 자체가 매우 수월하길래 결국 사용하였다.
우선 datetime이 AM, PM으로 나누는것이 아닌 14시 라는 조건이 있어 [%p]를 사용하지 않고 Django filter 를 사용하여 직접 필터링을 거친 후 마찬기로 루프안에서도 Django model을 이용하여 filter를 한번더 걸어준다 ! 필터링된 데이터들에 Pandas를 사용하여 df로 변형시켜준다음 데이터프레임셋에서 한번더 Pandas filter를 걸어준다음 조건에 맞는 데이터 가공이 완료되었다..!

아직도 많이 부족한점이 보여 많은 경험과 공부를 토대로 레벨업 해야겠다! 파이팅!!
개발 스크립트 [view.py]
def main(request):
today0 = datetime.now().date()
today = datetime.today()
order_list = Order_list.objects.all()
am = order_list.filter(ORDER_DATE__range=['2022-05-02 00:00:00', '2022-05-02 13:59:59'])
pm = order_list.filter(ORDER_DATE__range=['2022-05-02 14:00:00', '2022-05-02 23:59:59'])
amlist = []
for iloc in am:
datalist = []
tgproductname = get_object_or_404(Productname,
MALL_ID=iloc.MALL_ID,
PRODUCT_NAME=iloc.PRODUCT_NAME,
SKU_VALUE=iloc.SKU_VALUE
)
if tgproductname.product:
datalist.append(tgproductname.product.packing.name)
datalist.append(iloc.P_EA * tgproductname.quan)
else:
datalist.append('품목 확인 바랍니다')
datalist.append(iloc.P_EA)
amlist.append(datalist)
col_name= ['packingname','quan']
list_df = pd.DataFrame(amlist, columns=col_name)
resultlist = []
for iloc in list(set(list_df['packingname'].values)):
resultdict = dict()
filterdf = list_df[list_df['packingname'] == iloc]
resultdict['name'] = iloc
resultdict['qaun'] = filterdf['quan'].sum()
resultlist.append(resultdict)
pmlist = []
for iloc in pm:
datalist = []
tgproductname = get_object_or_404(Productname,
MALL_ID=iloc.MALL_ID,
PRODUCT_NAME=iloc.PRODUCT_NAME,
SKU_VALUE=iloc.SKU_VALUE
)
if tgproductname.product:
datalist.append(tgproductname.product.packing.name)
datalist.append(iloc.P_EA * tgproductname.quan)
else:
datalist.append('품목 확인 바랍니다')
datalist.append(iloc.P_EA)
pmlist.append(datalist)
col_name = ['packingname', 'quan']
list_df = pd.DataFrame(pmlist, columns=col_name)
pm_resultlist = []
for iloc in list(set(list_df['packingname'].values)):
resultdict = dict()
filterdf = list_df[list_df['packingname'] == iloc]
resultdict['name'] = iloc
resultdict['qaun'] = filterdf['quan'].sum()
pm_resultlist.append(resultdict)
print(resultdict)
today_list = []
now = datetime.today().strftime("%Y년%m월%d일")
today_list.append(now)
testlist = {}
for i in order_list:
if i.MALL_ID not in testlist:
testlist[i.MALL_ID] = 0
testlist[i.MALL_ID] += i.PAY_COST
mall = testlist.keys()
pay = testlist.values()
mall_list = list(mall)
pay_list = list(pay)
context = {
'order_list': Order_list.objects.all(),
'mall_list': mall_list,
'today_list': today_list,
'pay_list': pay_list,
'resultlist': resultlist,
'pm_resultlist': pm_resultlist
}
개발 템플릿 [html]
<div class="maincon">
<div class="con" style="display: inline-block">
<div class="pagetitle">
<span>금일 현황</span>
</div>
<div class="today_am con">
<div class="pagetitle">
<span id="blink_am">오전현황 14시 이전</span>
<button id="btn-copy-content" style="float: right; width: 70px;" class="color_btn btn-secondary"
type="button">
복사
</button>
</div>
<div id="contentBody" class="note">
<ul class="main_note" id="textDiv">
{% for iloc in resultlist %}
<li class="sub_note">{{ iloc.name }} : {{ iloc.qaun }}</li>
{% endfor %}
{% for iloc in today_list %}
<li class="sub_note">{{ iloc }}</li>
{% endfor %}
<li class="sub_note">온라인발주</li>
<li class="sub_note" style="color: #FF1700;">드라이아이스 5박스 예상됩니다.</li>
</ul>
</div>
</div>
<div class="today_pm con">
<div class="pagetitle">
<span id="blink_pm">오후 현황 14시 이후</span>
<button id="btn-copy-content" style="float: right; width: 70px;" class="color_btn btn-secondary"
type="button">
복사
</button>
</div>
<div id="contentBody" class="note">
<ul class="main_note" id="textDiv">
{% for iloc in pm_resultlist %}
<li class="sub_note">{{ iloc.name }} : {{ iloc.qaun }}</li>
{% endfor %}
{% for iloc in today_list %}
<li class="sub_note">{{ iloc }}</li>
{% endfor %}
<li class="sub_note">온라인발주</li>
<li class="sub_note" style="color: #0d6efd">드라이아이스 5박스 예상됩니다.</li>
</ul>
</div>
</div>
</div>
반응형
'Django' 카테고리의 다른 글
2022-05-17 개발일기 [Django, Chart.js] (0) | 2022.05.17 |
---|---|
2022-05-11 개발일기 [Django, Django template] (0) | 2022.05.11 |
2022-05-04 개발일기 [Django, Chart.js] (0) | 2022.05.04 |
2022-05-03 개발일기 [Django, Fullcalendar] (0) | 2022.05.03 |
2022-05-02 개발일기 [Django, Fullcalendar] (0) | 2022.05.02 |