github : 3Week_mission 확인!
기본
- 가상환경 설치 → Django 설치 → Django-admin Project → Django-admin App
Basic
요구사항 해석
- 단순하게 요구사항을 직역해서
Model 분리 안하고 한개의 모델안에 필드 여러개의 이름으로 작성만 해도 된다고 생각한다.
결과물 (Model 결과)
#App의 models.py 파일 내용
from django.db import models
# to=user 사용자와 연결하기 위한 import
from django.contrib.auth import get_user_model
User = get_user_model()
class faq(models.Model):
# Choices로 연결하기 위한 카테고리 목록
category_Choices = [
('ge', '일반'), #General
('ad', '계정'), #admin
('et', '기타'), #etc
]
category_list = models.CharField(
max_length=2,
choices=category_Choices,
)
title = models.CharField(max_length=20) # 제목 20글자로 제한
inquiry_content = models.TextField('질문') # 질문 내용
answer_content = models.TextField(verbose_name='답변') # 답변 내용
writer = models.ForeignKey(to=User, on_delete=models.CASCADE, null=True, blank=True) # 답변과 질문이 같은 테이블 & 분리방법 모르겠음
created_at = models.DateTimeField('생성일시', auto_now_add=True) # 작성시(지금) 시간
modified_at = models.DateTimeField('최종 수정일시', auto_now=True)
관리자페이지에서 확인해보기
- Admin.py에 Test 결과 볼 수 있게 표시
from django.contrib import admin
from .models import faq
@admin.register(faq)
class faqModelAdmin(admin.ModelAdmin):
# faq 보기위한 table 컬럼 구성
list_display = ('id', 'category_list', 'title', 'inquiry_content', 'answer_content', 'created_at', 'modified_at', 'writer')
- (명령) python manage.py makemigrations
- (명령) python manage.py migrate
- (명령) python manage.py createsuperuser
- (명령) python manage.py runserver
- 추가해보고 Test 데이터 추가
- 수정후 Data 변경 확인
Advence
요구사항 해석
결과물 (Model 결과)
#App 내의 models.py 파일 내용
from django.db import models
# to=user 사용자와 연결하기 위한 import
from django.contrib.auth import get_user_model
User = get_user_model()
# 카테고리, 제목, 이메일, 문자메시지, 내용, 이미지
class inquiry(models.Model):
# Choices로 연결하기 위한 카테고리 목록
category_Choices = [
('ge', '일반'), #General
('ad', '계정'), #admin
('et', '기타'), #etc
]
category_list = models.CharField(
max_length=2,
choices=category_Choices,
)
title = models.CharField(max_length=30) # 제목 글자수 제한
mail_add = models.EmailField('이메일') # 이메일
text_msg = models.CharField(max_length=40, verbose_name='문자메시지') # 문자메시지
content = models.TextField('질문') # 질문 내용
image = models.ImageField(verbose_name='이미지')
writer = models.ForeignKey(to=User, on_delete=models.CASCADE, null=True, blank=True)
created_at = models.DateTimeField('생성일시', auto_now_add=True) # 작성시(지금) 시간
modified_at = models.DateTimeField('최종 수정일시', auto_now=True) # 수정(객체등록) 자동 업데이트
# 답변 내용, 참조 문의글, 생성자, 생성 일시, 최종 수정자, 최종 수정 일시
class answer(models.Model):
content = models.TextField(verbose_name='답변') # 답변 내용
inquiry = models.ForeignKey(to='inquiry', on_delete=models.CASCADE) #inquiry 삭제시 answer 전체 삭제 # 참조 문의글??
writer = models.ForeignKey(to=User, on_delete=models.CASCADE, null=True, blank=True)
create_at = models.DateTimeField(verbose_name='생성일시', auto_now_add=True) # 답변 작성일 (갱신)
# inline으로 되면서 답변도 질문객체로 인식 되어 최종수정일시 수정됨
관리자페이지에서 확인해보기
- Admin.py에 Test 결과 볼 수 있게 표시
from django.contrib import admin
from .models import inquiry, answer
class answerInline(admin.TabularInline):
model = answer
extra = 1
min_num = 0
max_num = 5
verbose_name = '댓글'
verbose_name_plural = '댓글'
@admin.register(inquiry)
class inquiryModelAdmin(admin.ModelAdmin):
# inquiry 보기위한 table 컬럼 구성
list_display = ('id', 'category_list', 'title', 'mail_add', 'text_msg', 'content', 'writer', 'created_at', 'modified_at')
inlines = [answerInline]
@admin.register(answer)
class answerModelAdmin(admin.ModelAdmin):
# answer 보기위한 table 컬럼 구성
list_display = ('id', 'content', 'inquiry', 'writer', 'create_at')
- (명령) python manage.py makemigrations
- (명령) python manage.py migrate
- (명령) python manage.py createsuperuser
- (명령) python manage.py runserver
- 추가해보고 Test 데이터 추가
(질문_inquiry)
(답변_answer)
※ 최종 수정일자가 변하지 않음
(inline시키고 Data 확인)
(최종 수정일자 변화는 것 확인)
개인 advence
- 사용면에 있어서 질문과 답변의 모델을 분리를 해야한다고 생각했다.
- 작성자를 불러오는데에 Login 방식이 아니다 보니 자동 연동이 안된다.
- model만 만들고 추가적으로 html이나 아무것도 연결한 것이 없다.
(도전!) 로그인 ~ 게시판 만들기
'학습 > [The-Origin][SW][Backend] Main Pag' 카테고리의 다른 글
[The Origin][VSCODE][Django] Debug Toolbar (0) | 2022.04.22 |
---|---|
[The Origin][백엔드] 5주차 (0) | 2022.04.22 |
[The Origin][VSCODE][Django] Template Engine (0) | 2022.04.18 |
[The Origin][VSCODE][Django] FBV, CBV 이해 (0) | 2022.04.18 |
[The Origin][VSCODE][Django] 화면 Data 출력 방식 (Text, HTML, JSON), Data 받기 (주소, Query parameter) (0) | 2022.04.18 |