최신글
hyeonga_code
파이선 웹구축_장고_22_댓글_상속 테이블 본문
반응형
- 상속 테이블
1. 장고 실행
2.앱 생성
3. 상속 클래스 테이블 생성 <acc> > 'models.py'
'models.py'
=====
1
2
3
4
5
6
7
8
9
10
|
from django.db import models
# Create your models here.
class Board(models.Model):
subject = models.CharField(max_length=100)
writer = models.CharField(max_length=100)
content = models.TextField()
def __str__(self):
return f"{self.writer} 가 작성한 {self.subject}"
|
cs |
갑자기 보드를 참조하게 됨
보드는 리플라이에게 역참조지시자를 사용하여 불러올 수 있음
자식클래스(소문자)_set로 가져오면 됨
"reply_set"
b.reply_set.all() 형식
>> 마이그레이션 > 오류
'''
TypeError: ForeignKey.__init__() missing 1 required positional argument: 'on_delete'
'''
'''
- 수정
board = models.ForeignKey(Board, on_delete=models.CASCADE)
#_ 1이 사라졌을 때 N도 사라지게 설정하는 것
'''
'models.py' 수정
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
from django.db import models
class Board(models.Model):
subject = models.CharField(max_length=100)
writer = models.CharField(max_length=100)
content = models.TextField()
def __str__(self):
return f"{self.writer} 가 작성한 {self.subject}"
class Reply(models.Model):
board = models.ForeignKey(Board, on_delete=models.CASCADE)
#_ 1이 사라졌을 때 N도 사라지게 설정하는 것
replyer = models.CharField(max_length=100)
comment = models.TextField()
def __str__(self):
return f"{self.board}_{self.replyer}"
|
cs |
4. 계정 연결
'admin.py'
=====
1
2
3
4
5
|
from django.contrib import admin
from .models import Board, Reply
admin.site.register(Board)
admin.site.register(Reply)
|
cs |
>> /admin/ 사이트 접속 > 직접 작성하는 것이 아니라 board의 테이블을 가져와서 사용하게 됨
5. 경로 설정
'urls.py'
=====
1
2
3
4
5
6
7
8
|
from django.urls import path
from . import views
urlpatterns = [
path('index/', views.index, name="index"),
path('detail/<bpk>', views.detail, name="detail"),
path('delete/<bpk>', views.delete, name="delete"),
]
|
cs |
6. 함수 설정
'views.py'
=====
1
2
3
4
5
6
7
8
9
10
11
|
from .models import Board, Reply
def detail(request, bpk):
b = Board.objects.get(id=bpk)
r = b.reply_set.all()
#_ 붙어있는 모든 정보 불러오기
context = {
"b" : b,
"rset" : r
}
return render(request, "board/detail.html", context)
|
cs |
6. 상세페이지 작성
'detail.html'
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<h1><b>{{ b.subject }}</b></h1>
<h4>written by <b>{{b.writer}}</b></h4>
<textarea cols="60" rows="6" disabled>{{ b.content }}</textarea><br><br>
<a href="{% url 'index' %}"><button>홈</button></a>
<hr>
{% for i in rset %}
<b>{{ i.replyer }}</b> {{ i.comment }} <br>
{% empty %}
댓글을 달아주세요
{% endfor %}
|
cs |
반응형
'Python_Django' 카테고리의 다른 글
파이선 웹구축_장고_24_댓글 선택 삭제 (0) | 2023.06.16 |
---|---|
파이선 웹구축_장고_23_댓글 등록 (0) | 2023.06.15 |
파이선 웹구축_장고_21_계정 비밀번호 변경 (0) | 2023.06.13 |
파이선 웹구축_장고_20_계정 프로필 수정 (0) | 2023.06.12 |
파이선 웹구축_장고_19_계정 회원가입 페이지 (0) | 2023.06.11 |