WEB/Django prac 181

[Django prac][DB N:M ① 의사와 환자] 7. shell_plus / 다대다 add, remove

1. shell_plus 들어가기 python manage.py shell_plus 2. 의사, 환자 만들기 doctor1 = Doctor.objects.create(name='allie') patient1 = Patient.objects.create(name='carol') patient2 = Patient.objects.create(name='duke') 3. add 다대다 관계 추가 # 1번 환자가 1번 의사를 예약 patient1.doctors.add(doctor1) # 내가 오늘 진로보는 의사를 다 알고 싶다. 참조 patient1.doctors.all() # 내가 오늘 보는 환자를 모두 보고 싶다. 역참조 doctor1.patient_set.all() # 의사 1번이 환자 2번을 예약한다 do..

WEB/Django prac 2024.04.08

[Django prac][DB N:M ① 의사와 환자] 6. 장고의 ManyToManyField

=> 자, 이제 또 새로운 방법을 찾아보자. 장고가 reservtion 필드를 직접 만들어주도록 하는 것 ManyToManyField로 중개모델을 자동 생성한다. 1. models.py가 다시 간단해졌다. from django.db import models class Doctor(models.Model): name = models.TextField() def __str__(self): return f'{self.pk}번 의사 {self.name}' class Patient(models.Model): # ManyToManyField 작성 doctors = models.ManyToManyField(Doctor) name = models.TextField() def __str__(self): return f'..

WEB/Django prac 2024.04.08

[Django prac][DB N:M ① 의사와 환자] 5. 예약 데이터 생성

1. shell_plus 들어가기 python manage.py shell_plus 2. 의사, 환자, 예약테이블 만들기 # 첫번째 의사 만들기 doctor1 = Doctor.objects.create(name='allie') # 첫번째 환자 만들기 # 외래키(어떤 의사에게 진료받을 지) 없이 환자꺼만 만들면 된다 patient1 = Patient.objects.create(name='carol') # 예약 테이블 만들기 # 1번 환자가 1번 의사에게 예약받도록 Reservation.objects.create(doctor=doctor1, patient=patient1) 3. DB에서 확인해보기 4. 조회하기 # 의사가 자신의 환자 목록을 보고 싶을 때 doctor1.reservation_set.all()..

WEB/Django prac 2024.04.08

[Django prac][DB N:M ① 의사와 환자] 4. 예약 모델 생성

# hospitals > models.py from django.db import models class Doctor(models.Model): name = models.TextField() def __str__(self): return f'{self.pk}번 의사 {self.name}' # 외래키 삭제 class Patient(models.Model): name = models.TextField() def __str__(self): return f'{self.pk}번 환자 {self.name}' # 중개모델 작성 class Reservation(models.Model): doctor = models.ForeignKey(Doctor, on_delete=models.CASCADE) patient = mod..

WEB/Django prac 2024.04.08

[Django prac][DB N:M ① 의사와 환자] 3. shell_plus 의사, 환자 만들기

1. shell_plus 들어가기 python manage.py shell_plus 2. 의사 만들기 # 첫번째 의사 만들기 doctor1 = Doctor.objects.create(name='allie') # 두번째 의사 만들기 doctor2 = Doctor.objects.create(name='barbie') 3. 환자 만들기 첫번째 환자는 첫번째 의사에게 진료받기 두번째 환자는 두번째 의사에게 진료받기 # 첫번째 환자 만들기 # 생성이 될 때, 어떤 의사에게 진료를 받아야하는지에 대한 외래키 정보도 입력해야한다. patient1 = Patient.objects.create(name='carol', doctor=doctor1) # 두번째 환자 만들기 patient2 = Patient.objects.c..

WEB/Django prac 2024.04.08

[Django prac][DB N:M ① 의사와 환자] 2. 의사와 환자 간 모델 관계 설정

# hospitals > models.py 의사와 환자 간 모델 관계 설정 여러 명의 환자가 한 명의 의사에게 예약할 수 있도록 설계 더보기 from django.db import models class Doctor(models.Model): name = models.TextField() def __str__(self): return f'{self.pk}번 의사 {self.name}' class Patient(models.Model): doctor = models.ForeignKey(Doctor, on_delete=models.CASCADE) name = models.TextField() def __str__(self): return f'{self.pk}번 환자 {self.name}' # migrate ..

WEB/Django prac 2024.04.08

[Django prac][DB N:1 ②] 9. 이 게시글의 작성자만 지울 수 있도록 처리해주기

# articles > views.py 이 게시글의 작성자만 지울 수 있도록 처리해주기 지금은 로그인이 되어있는 사람이면, 아무나 다 지울 수 있다 def delete(request, pk): article = Article.objects.get(pk=pk) if request.user == article.user: article.delete() return redirect('articles:index') @login_required def comments_delete(request, article_pk, comment_pk): comment = Comment.objects.get(pk=comment_pk) if request.user == comment.user: comment.delete() retu..

WEB/Django prac 2024.04.05

[Django prac][DB N:1 ②] 8. 수정 요청자와 작성자를 비교해서 일치한다면, 글을 update할 수 있도록 만들기

# 서버 켜기 save all python manage.py runserver 다른 사람이 작성한 글을 수정하지 못하게 하도록 한 것을 확인해야하기 때문에 계정을 하나 더 만들어준다 내가 쓴 글이 잘 수정이 되는지 확인 내가 안쓴 글이 수정이 안되는 것도 확인하기 이거 할 때 로그인을 한 상태로 해야한다. update 버튼을 누르면, 메인페이지로 돌아가게 됨

WEB/Django prac 2024.04.05

[Django prac][DB N:1 ②] 7. 수정 요청자와 작성자가 서로 같을 때만 글을 update할 수 있는 버튼이 나타나도록

# articles > templates > articles >detail.html 수정 요청자와 작성자를 비교해서, 서로 같을 때만 글을 update 할 수 있는 버튼이 나타나도록 하기 {% if request.user == article.user %} UPDATE {% csrf_token %} {% endif %} 더보기 Detail {{ article.pk }} 번째 글 작성자: {{ article.user }} 제목: {{ article.title }} 내용: {{ article.content }} 작성일: {{ article.created_at }} 수정일: {{ article.updated_at }} {% if request.user == article.user %} UPDATE {% csrf..

WEB/Django prac 2024.04.05