본문 바로가기

학습/[The-Origin][SW][Backend] Main Pag

[The Origin][2차][Mission] FAQ 만들기

반응형

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이나 아무것도 연결한 것이 없다.

(도전!) 로그인 ~ 게시판 만들기


 

 

반응형