2017-11-16 4 views
1

저는 프로그래밍 언어, 장고 및 데이터베이스 모델을 처음 사용합니다. 그래서 내 질문은 간단하다. models.py에 3 가지 모델을 가지고있다.부모 모델의 데이터베이스 모델 필드에 액세스하는 방법. 수업 -> 학교 -> 사용자?

class UserProfileInfo(models.Model): 
# create relationship with built-in user in admin 
user = models.OneToOneField(User) 
portfolio_site = models.URLField(blank=True) 

class School(models.Model): 
user = models.ForeignKey(User, on_delete=models.CASCADE) 
name = models.CharField(max_length=256) 
principal = models.CharField(max_length=256) 
location = models.CharField(max_length=256) 

class Classroom(models.Model): 
school = models.ForeignKey(School, on_delete=models.CASCADE) 
class_name = models.CharField(max_length=256) 
desc = models.CharField(max_length=256) 

그리고 사용자 모델에서 'id'에 액세스하고 싶다. 나는

데프 ClassroomView (요청)를 사용하여 시도 :

classroom_list = Classroom.objects\ 
        .filter(school__id=request.session.get('user_id','0'))\ 
        .filter(user__id=1).values() 
class_dict = {'class_records': classroom_list} 
return render(request, 'basic_app/classroom_list.html', context=class_dict) 

을 그리고 그것은 다음과 같은 오류 제공 :

FieldError at /basic_app/class/ 
Cannot resolve keyword 'user' into field. Choices are: class_name, desc, id, school, school_id 

내가 교실에서 사용자 모델의 필드를 액세스 할 수있는 모든 방법이 있나요을 모델이 외래 키에 의해 Classroom-> School-> User로 연결되어 있기 때문에 모델 내가 여기에 뭔가 잘못하고 있다고 말하면 제게 통찰력과 해결책이 주어집니다 !! 1
  • 학교 - 사용자 = 1 : N
  • 교실 - 학교 = 1 : N에서
  • 즉 - UserProfileInfo = 1

    • 사용자 : 그냥 요약하자면

    답변

    1

    각 사용자에게는 1 개의 UserProfile 만 있습니다. 각 학교마다 1 명의 사용자가 연결되어 있으며 해당 사용자는 여러 학교에 연결할 수 있습니다 (원하는 경우 확실하지 않지만 유스 케이스에 따라 다름). 각 학교는 여러 개의 강의실을 가질 수 있습니다.

    귀하의 목표는 사용자에게 부착 된 학교 목록을 반환하는 것입니다. 나는이 작업을 수행합니다 : 뷰에서

    classroom_list = Classroom.objects.filter(school__user=User.objects.get(pk=0)) 
    

    경우 또는

    요청 : 많이 man..i 고맙습니다

    classroom_list = Classroom.objects.filter(school__user=request.user) 
    
    +0

    가 하루 동안 작동하도록 시도하고있다! 매우 감사드립니다. –