Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- qwindows.dll
- django role based
- query 최적화
- django
- pyside6 ui
- channels
- test drive development
- 장고로 ERP
- Python
- qpa_plugin
- 장고
- 재고 관리
- tensorflow
- django rank
- uiload
- pyside6
- django test
- Self ERP
- 중량 관리
- QApplication
- optimization page
- materialized
- django drf
- orm 최적화
- 파이썬
- pip 오류
- ERP
- pip 설치
- django erp
- 페이지 최적화
Archives
- Today
- Total
취미삼아 배우는 프로그래밍
Django로 개인 업무(ERP) 홈페이지 만들기-6 본문
진행상황
어쩌다보니 테이블을 되게 정성스럽게 만들었다.
def order_manage(request):
template_name = "order_list_page.html"
qs = IntegratedInfo.objects.filter(is_completed=False).order_by('rank_number')
# 아.. 최적화는 나중에 하고 일단 결과부터 만들자.
# TODO 최적화 필요할듯! Debug Toolbar 확인필요
filar_list = []
panel_list = []
for res in qs:
pan = res.panel_infos
fil = res.filar_infos
filar_list.append(fil)
panel_list.append(pan)
qs_dict = list(qs.annotate(
company_name=F('base_data__base__company'),
location_name=F('base_data__base__location'),
district_name=F('base_data__district'),
).values())
qs_list = []
for panel, filar, qs_new in zip(panel_list, filar_list, qs_dict):
qs_new['panel_info'] = panel
qs_new['filar_info'] = filar
qs_new['process'] = 'None'
qs_list.append(qs_new)
table = OrderTable(qs_list)
context = {
"table":table
}
return render(request, template_name, context)
쿼리셋 안에 또 쿼리셋 결과를 넣는거는 이렇게 밖에 생각이 안난다. 최적화는 못했지만, 결론적으로 최적화를 덜 하기 위해서 Pagination을 사용하게 된다면, 성능부분에 있어서는 좀 괜찮을 것 같다.
이렇게 만든 qs_dict를 테이블에 넣어서 강제적으로 테이블을 뽑아낸다.
그리고 테이블을 만드는 코드는 아래와 같이 작성했다.
import django_tables2 as tables
from standardwall.models import *
from django.utils.safestring import mark_safe
from django.urls import reverse
def dropdown_check_helper(value):
if value:
return '<i class="material-icons">check_box</i>'
else:
return '<i class="material-icons">check_box_outline_blank</i>'
def tooltip_string_helper(record):
string_base = ''
if record['is_order_printed']:
string_base += '오더 : 인쇄함<br>'
else:
string_base += '오더 : 인쇄안함<br>'
if record['is_barcode_printed']:
string_base += '바코드 : 인쇄안함'
else:
string_base += '바코드 : 인쇄안함'
return string_base
class OrderTable(tables.Table):
company_name = tables.Column(verbose_name="업체명")
location_name = tables.Column(verbose_name="현장명")
district_name = tables.Column(verbose_name="동")
filar_maded = tables.Column(verbose_name="제작반",)
panel_info = tables.Column(verbose_name="판넬정보")
memo = tables.Column(verbose_name="비고")
process = tables.Column(verbose_name="진행상황")
class Meta:
# model = IntegratedInfo
fields = ('company_name', 'location_name',
'district_name', 'filar_maded', 'panel_info', 'memo', 'process',)
row_attrs = {
"data-id": lambda record: record['id']
}
def render_panel_info(self, value, record):
res_string = ''
for filar in record['filar_info']:
if int(filar) != 0:
res_string += str(filar) + ','
res_string = res_string[0:len(res_string)-1]
if res_string != '':
res_string += '필라, '
for panel in record['panel_info']:
res_string += str(panel) + ','
res_string = res_string[0:len(res_string)-1]
return res_string
def render_process(self, value, record):
component = f'''
<!-- Dropdown Trigger -->
<a class='dropdown-trigger btn tooltipped' href='#'
data-position="top"
data-tooltip="{tooltip_string_helper(record)}"
data-target='dropdown{record['id']}' >
{dropdown_check_helper(record['is_order_printed'])}
{dropdown_check_helper(record['is_barcode_printed'])}
</a>
<!-- Dropdown Structure -->
<ul id='dropdown{record['id']}' class='dropdown-content'>
<li><a href="#!">바코드 체크</a></li>
<li><a href="#!">완료 체크</a></li>
<li class="divider" tabindex="-1"></li>
<li><a href="{
reverse('detailed_order',
kwargs={'id':int(record['id']) })
}">오더 보기</a></li>
</ul>
'''
return mark_safe(component)
설명하기도 어렵다.
그렇게해서 이제 거의 다 했구나!!! 생각했는데,
어,,
어?
300, 400, 450, 600에 관한 내용 자체가 없다.
아 큰일이다. 시작부터 잘못됐다. 이거 아예 근본이 틀려먹은 상황.
글을 쓰는 지금마저 살짝 현타가 온다. 심지어 칸 크기 조절도 잘 못하겠다.
어찌어찌하면 고칠수야 있겠지만, 내 목줄은 지금 여기에 있지 않다. 어차피 이거 나는 1주일도 못 쓴다. 때문에, 일단은 드랍한다.
이놈의 회사는 입출고 현황표를 엑셀로 저장한다. 개개인마다 목표는 다 같지만 수식이 다 다르고 스타일도 다 다르다. 그런데 이거 숫자적다가 너무 개고생하는거 같다.
그래서 기획해보려한다. 근데 너무 항목이 많다. ㄷㄷ,
입고인지 출고인지를 ForeignKey로, 그리고 구분 자체는 M2M, 그리고 품목의 유형은 또 ForeignKey로? 음 일단 조금 더 생각해봐야겠다.
사실 이거만이면 어찌어찌 구현가능하다. 그치만
몇몇 항목에 있어서는 이것과 세트템이라는 사실..!(두둥탁.)
오쉣,,
'파이썬(장고)' 카테고리의 다른 글
Django로 개인 업무(ERP) 홈페이지 만들기-7 (11) | 2020.11.22 |
---|---|
Django로 개인 업무(ERP) 홈페이지 만들기-5 (0) | 2020.11.14 |
Django로 개인 업무(ERP) 홈페이지 만들기-4 (0) | 2020.11.13 |
Django로 개인 업무(ERP) 홈페이지 만들기-3 (0) | 2020.11.10 |
Django로 개인 업무(ERP) 홈페이지 만들기-2 (0) | 2020.11.03 |
Comments