장고를 처음 접했을뿐 아니라 다른 모델의 사용자 프로필과 리뷰를 표시하는 페이지 작업을하고 있습니다.장고에서 두 개의 다른 모델을 연결하는 방법
내가 조금은 확신 할 수없는 부분은 다른 테이블이나 모델을 연결하는 방법입니다. 제가하려는 것은 극히 기본입니다. 거의 사용자 이름을 클릭하자마자 프로파일 페이지로 이동하여 하단의 모든 사용자 리뷰를 표시합니다. 'name = ben'대신 변수를 사용하고 'name = user_you_clicked_on'과 같이 변경할 수 있는지 궁금합니다.
바라건대 내가 바라는 바는 말이되며 어쩌면 올바른 방향으로 향하게 될 수 있습니다. 외래 키를 사용해 보라고했는데 그게 내가하려고하는 것이 확실하지 않습니다.
from django.shortcuts import render
def index(request):
profile_info = User.objects.filter(name=‘ben’)
context = {‘profile_info’: profile_info}
latest_reviews = UserReview.objects.filter(name=‘ben').order_by('-pub_date')[:5]
context = {‘profile_info’: profile_info, 'latest_reviews': latest_reviews}
return render(request, 'randomtemplate.html', context)
장고 자습서를 작성 했습니까? 모델 간의 이런 종류의 관계는 꽤 잘 다뤄집니다. 일반적으로 실제로 이름보다는 외래 키를 사용하고 URL에서 캡처합니다. 'UserReview' 모델에서 사용자의 이름을 필드로 저장하는 것처럼 보입니다. 이것은 나쁜 생각입니다. 표준 데이터베이스 정규화 지침을 위반하는 것은 물론 이런 종류의 작업을 어렵게 만듭니다. –
아마도 UserReview 행 수를 User 행에 연결하는 외래 키 관계를 추가하는 것이 좋습니다. 설명을 참조하십시오. https://docs.djangoproject.com/en/1.7/topics/db/examples/many_to_one/ – rje
그런데 외래 키를 사용하여 사용자 리뷰를 조회 할 필요가 없습니다. 'UserReview.objects.filter (user__name = 'ben')'와 같은 문법을 사용할 수있다. UserReview 모델 클래스에 User 인스턴스를 참조하는 "user"속성이있는 외래 키 릴레이션을 설정했다고 가정합니다. – rje