如何访问链接为例如链接的父模型的数据库模型字段Class->学校->用户?

how to access database model fields of parent model linked as e.g. Class->School->User?

我对编程语言、django 和数据库模型还很陌生。所以我的问题很简单我在 models.py 中有 3 个模型 as

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'。我试过使用

def 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 模型访问 User 模型的字段,因为它通过外键链接为 Classroom->School->User 如果我在这里做错了什么,请告诉我任何见解和解决方案,我们将不胜感激!!

简单回顾一下:

  • 用户 - UserProfileInfo = 1:1
  • 学校 - 用户 = 1:N
  • 教室 - 学校 = 1:N

换句话说,每个用户有 1 个且只有一个 UserProfile。每所学校都有 1 个用户,并且该用户可以连接到多个学校(不确定这是否需要,但这取决于用例)。每个学校可以有多个教室。

您的目标是return 学校列表附加到用户。我会这样做:

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

或者如果在有请求的视图中:

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