I'm developing a shopping mall integrated management site.
There is a lot of order data in one Excel file, and the data in each row of order data contains the data required for each model, so the reason the model is separated is because it has been normalized. Anyway, I want to put the data in this Excel in the field of each model. Is there a way? And I will receive the Excel file from the template through form.
There are three models, and I want to insert data from one Excel file into the fields of each model.?
models.py
배송요금정산코드 = (
('정산완료','정산완료'),
('미정산','미정산'),
('취소/차감','취소/차감'),
)
'''배송관리 모델'''
class DEL(models.Model):
del_no = models.CharField(db_column='DEL_NO', max_length=17, primary_key=True) # Field name made lowercase.
ord_no = models.ForeignKey('ORD', models.DO_NOTHING, db_column='ORD_NO' ,related_name='ORD_NO_DEL',verbose_name='주문번호') # Field name made lowercase.
del_wy_cd = models.CharField(db_column='DEL_WY_CD', max_length=19,verbose_name='배송방법코드') # Field name made lowercase.
del_co = models.CharField(db_column='DEL_CO', max_length=20, blank=True, null=True,verbose_name='택배사') # Field name made lowercase.
wb_no = models.CharField(db_column='WB_NO', unique=True, max_length=14, blank=True, null=True,verbose_name='송장번호') # Field name made lowercase.
wb_dttm = models.DateTimeField(db_column='WB_DTTM', blank=True, null=True,verbose_name='송장입력일시') # Field name made lowercase.
to_nm = models.CharField(db_column='TO_NM', max_length=100,verbose_name='수취인명') # Field name made lowercase.
to_tel1 = models.CharField(db_column='TO_TEL1', max_length=12,verbose_name='수취인 연락처1') # Field name made lowercase.
to_tel2 = models.CharField(db_column='TO_TEL2', max_length=45, blank=True, null=True,verbose_name='수취인 연락처2') # Field name made lowercase.
del_addr = models.CharField(db_column='DEL_ADDR', max_length=150,verbose_name='배송 주소') # Field name made lowercase.
del_msg = models.CharField(db_column='DEL_MSG', max_length=100, blank=True, null=True,verbose_name='배송 메시지') # Field name made lowercase.
p_qty = models.IntegerField(db_column='P_QTY',verbose_name='상품수량') # Field name made lowercase.
del_qty = models.IntegerField(db_column='DEL_QTY',verbose_name='배송 수량') # Field name made lowercase.
del_type_cd = models.CharField(db_column='DEL_Type_CD', max_length=10,verbose_name='배송유형코드') # Field name made lowercase.
out_delc_type = models.CharField(db_column='Out_DELC_Type', max_length=20,verbose_name='배송요금타입') # Field name made lowercase.
del_pos_cd = models.CharField(db_column='DEL_POS_CD', max_length=10,verbose_name='배송처리코드') # Field name made lowercase.
delc_advance_pay_cd = models.CharField(db_column='DELC_Advance_Pay_CD', max_length=10,verbose_name='배송요금정산코드') # Field name made lowercase.
delc_pay_cd = models.CharField(db_column='DELC_PAY_CD',default='미정산',choices=배송요금정산코드, max_length=10,verbose_name='배송요금정산일') # Field name made lowercase.
out_delc_tot = models.IntegerField(db_column='Out_DELC_TOT',verbose_name='외부 배송요금합계') # Field name made lowercase.
out_delc_extry = models.SmallIntegerField(db_column='Out_DELC_extry',verbose_name='외부 배송추가요금') # Field name made lowercase.
delc_tot = models.IntegerField(db_column='DELC_TOT',verbose_name='배송요금 합계(정산)') # Field name made lowercase.
delc_extry = models.SmallIntegerField(db_column='DELC_extry',verbose_name='배송추가 요금(정산)') # Field name made lowercase.
delc_pay_due = models.IntegerField(db_column='DELC_PAY_Due',verbose_name='배송비 정산예정액') # Field name made lowercase.
delc_pay_dttm = models.DateTimeField(db_column='DELC_PAY_DTTM', blank=True, null=True,verbose_name='배송 요금정산 일시' ) # Field name made lowercase.
class Meta:
# managed = False
verbose_name = '주문 묶음배송'
verbose_name_plural = '주문 묶음배송'
db_table = 'DEL'
constraints = [
models.UniqueConstraint(fields=['ord_no', 'del_no'], name='배송관리 식별자')
]
'''고객 주문 모델'''
class ORD(models.Model):
ord_no = models.IntegerField(db_column='ORD_NO', primary_key=True,verbose_name='주문번호') # Field name made lowercase.
ord_byr_nm = models.CharField(db_column='ORD_BYR_NM', max_length=100,verbose_name='구매자 이름') # Field name made lowercase.
ord_pay_dttm = models.DateTimeField(db_column='ORD_PAY_DTTM', verbose_name='주문결제일시') # Field name made lowercase.
ord_byr_tel_no = models.CharField(db_column='ORD_BYR_TEL_NO', max_length=12,verbose_name='구매자 연락처') # Field name made lowercase.
ord_sale_channel = models.CharField(db_column='ORD_Sale_Channel', max_length=20,verbose_name='판매채널') # Field name made lowercase.
ord_delc_tot = models.IntegerField(db_column='ORD_DELC_TOT',verbose_name='배송요금합계') # Field name made lowercase.
ord_st_cd = models.CharField(db_column='ORD_ST_CD', max_length=10,verbose_name='주문상태 코드') # Field name made lowercase.
ord_bd_qty = models.SmallIntegerField(db_column='ORD_BD_QTY',verbose_name='주문 묶음(배송)수') # Field name made lowercase.
class Meta:
verbose_name = '주문서'
verbose_name_plural = '주문서'
# managed = False
db_table = 'ORD'
상품주문정산코드 = (
('정산완료','정산완료'),
('미정산','미정산'),
('취소/차감','취소/차감'),
)
'''고객 상품주문관리 모델'''
class PORD(models.Model):
p_ord_no = models.IntegerField(db_column='P_ORD_NM',primary_key=True,verbose_name='상품주문번호') # Field name made lowercase.
ord_no = models.ForeignKey(ORD, models.DO_NOTHING, db_column='ORD_NO', related_name='ORD_NO_PORD',verbose_name='주문번호') # Field name made lowercase.
del_no = models.ForeignKey(DEL, models.DO_NOTHING, db_column='DEL_NO', related_name='DEL_NO_PORD',verbose_name='묶음배송번호') # Field name made lowercase.
prod_no = models.ForeignKey(POPT, models.DO_NOTHING, db_column='PROD_NO', related_name='PROD_NO_PORD',verbose_name='생산자') # Field name made lowercase.
p_no = models.ForeignKey(P, models.DO_NOTHING, db_column='P_NO',related_name='P_NO_PORD',verbose_name='상품명') # Field name made lowercase.
p_opt_no = models.ForeignKey(POPT, models.DO_NOTHING, db_column='P_OPT_NO', related_name='P_OPT_NO_PORD',verbose_name='옵션명') # Field name made lowercase.
p_ord_ck_dttm = models.CharField(db_column='P_ORD_CK_DTTM', max_length=14,verbose_name='발주확인일시') # Field name made lowercase.
p_ord_del_dt_lmt = models.CharField(db_column='P_ORD_DEL_DT_LMT', max_length=14,verbose_name='발송기한') # Field name made lowercase.
p_ord_qty = models.SmallIntegerField(db_column='P_ORD_QTY',verbose_name='상품수량') # Field name made lowercase.
p_ord_tot_price = models.IntegerField(db_column='P_ORD_TOT_Price',verbose_name='총금액') # Field name made lowercase.
p_ord_fee_type = models.CharField(db_column='P_ORD_FEE_Type', max_length=30, blank=True, null=True,verbose_name='수수료과금구분(네이버)') # Field name made lowercase.
p_ord_pay_cd = models.CharField(db_column='P_ORD_PAY_CD', max_length=10, default='미정산', choices=상품주문정산코드,verbose_name='상품정산코드') # Field name made lowercase.
p_ord_pay_due = models.IntegerField(db_column='P_ORD_PAY_Due', verbose_name='상품정산액') # Field name made lowercase.
p_ord_pay_dttm = models.DateTimeField(db_column='P_ORD_PAY_DTTM',verbose_name='상품정산일',auto_now=True)
class Meta:
# managed = False
verbose_name = '상품주문서'
verbose_name_plural = '상품주문서'
db_table = 'P_ORD'
constraints = [
models.UniqueConstraint(fields=['ord_no', 'del_no', 'p_ord_no'], name='상품주문관리 식별자')
]