Leta Learns

Planned | 220517 본문

HUFS/종합설계 (캡스톤디자인)

Planned | 220517

leta 2022. 5. 17. 01:40

#bash에서 git commit 하는 법(명령어)

git add .

git commit -m "[commit message]"

git push origin [branch name]

 

차례대로 하면 된다. 지난 팀플에서는 vscode의 source control을 이용해서 했었는데 이번엔 연결을 잘못했는지 그게 안 돼서.. 일단 명령어로 하고 있다.

 

 

 

#여행 장소 여러 개 띄우기 (경로 확인, 여행지 확인 함수)

def checkpath(request, pk):
    travel = models.Travel.objects.get(pk=pk)
    place = models.Place.objects.get(travel=pk)
    return render(request, "travels/checkpath.html", {"travel": travel, "place":place})

def checktravel(request, pk): 
    travel = get_object_or_404(models.Travel, pk=pk)
    lodging = models.Lodging.objects.get(travel=pk)
    place = models.Place.objects.get(travel=pk)
    return render(request, 'travels/checktravel.html', {'travel':travel, 'lodging':lodging, 'place':place})

경로 확인 함수와 여행지 확인 함수 둘 다 place는 하나만 받을 수 있게 되어있다.

그래서 여행 장소를 여러 개 입력한 경우 아래의 에러가 난다.

 

일단 여행지확인 함수부터 해결하는 중이었다.

 

그런데 중간에 지금까지 한 거 먼저 커밋해놓느라고 마이그레이션을 전부 지웠다.

그래서 db를 생성해야 하므로 경로 확인 함수부터 해결하고 여행지 확인 함수를 해결하려고 한다.

 

def checkpath(request, pk):
    travel = models.Travel.objects.get(pk=pk)
    places = []
    for p in models.Place.objects.filter(travel=pk).order_by('order'):
        places.append(p)
    # place = models.Place.objects.get(travel=pk) #수정 전 코드
    return render(request, "travels/checkpath.html", {"travel": travel, "places":places})

아래 링크 참고해서 수정한 경로 확인 함수이다.

https://stackoverflow.com/questions/3835688/how-to-return-multiple-objects-related-with-foreignkey-in-django

 

How to return multiple objects related with ForeignKey in Django

I have the following in my models.py: class HostData(models.Model): Manager = models.ForeignKey(Managers) Host = models.CharField(max_length=50, null=True) HostStatus = models.CharField(max_...

stackoverflow.com

 

<!-- ### checkpath.html ### -->
{% extends 'base.html' %}
{% block page_title %}경로 확인{% endblock page_title %}
{% block content %}
<h1>경로 확인</h1>
{% csrf_token %}

{% for place in places %}
    <h3>{{place.day}}일차</h3><br>
    {{place.name}}<br>
{% endfor %}
{{travel.name}}
{{travel.start_date }}

<button>취소</button>
<a href="{% url 'travels:savepath' %}">
    <button type='submit'>경로 저장</button>
</a>
{% endblock %}

 

 

이렇게 수정하고 나면

 

물론 아직 디테일은 더 손봐야 하지만 일단 multiple objects를 리턴받을 수 있게 되었다.

 

 

 

 

 

 

 

 

 

 

 

여행지 확인 함수도 똑같이 수정하면 된다.

def checktravel(request, pk): 
    travel = get_object_or_404(models.Travel, pk=pk)
    lodging = models.Lodging.objects.get(travel=pk)
    places = []
    for p in models.Place.objects.filter(travel=pk):
        places.append(p)
    return render(request, 'travels/checktravel.html', {'travel':travel, 'lodging':lodging, 'places':places})

 

 

 


 

 

 

#여행 일자 순으로 정렬 (경로 확인 페이지)

음.. 이 부분은 프론트 같기도 한데 일단 order 설정을 해주어야 하는 거니까 시도해보려고 한다.

 

 

우선 지금 현재 왼쪽 이미지의 제주 여행 일정이 있다.

위에서 multiple objects return을 성공하였기 때문에 여행 장소 여러 개를 입력하면 추천하는 경로를 띄워준다.

현재 데이터는 5일 여행에 5개의 여행 장소를 가는 여정이다.

 

 

 

 

 

 

 

이제 이걸 일자 순으로 정렬해야 한다. (1일차, 2일차 순)

 

def checkpath(request, pk):
    travel = models.Travel.objects.get(pk=pk)
    places = []
    for p in models.Place.objects.filter(travel=pk).order_by('order'):
        places.append(p)
        
    places = sorted(places, key=models.Place.day)
    
    return render(request, "travels/checkpath.html", {"travel": travel, "places":places})

places를 day를 기준으로 정렬하는 코드를 넣었는데

이런 에러가 났다.

 

 

... 모르겠다. 일단 다른 거 부터 해야지. ㅎㅎ

 

 

'HUFS > 종합설계 (캡스톤디자인)' 카테고리의 다른 글

Planned | 220522  (0) 2022.05.22
Planned | 220518  (0) 2022.05.19
Planned | 220516  (0) 2022.05.16
Planned | 220513  (0) 2022.05.14
Planned | 220512  (0) 2022.05.13
Comments