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

时间:2017-11-16 20:41:18

标签: python django foreign-keys models

我是编程语言,django和数据库模型的新手。所以我的问题很简单我在models.py中有3个模型

R

我想访问' id'来自用户模型。我尝试过使用

def ClassroomView(请求):

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)

它会出现以下错误:

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)

有没有办法可以从课堂模型访问用户模型的字段,因为它通过外键链接为Classroom-> School-> User 请告诉我,如果我在这里做错了,任何见解和解决方案都会受到赞赏!!

1 个答案:

答案 0 :(得分:1)

回顾一下:

  • User - UserProfileInfo = 1:1
  • 学校 - 用户= 1:N
  • 课堂 - 学校= 1:N

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

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

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

或在带有请求的视图中:

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