我是编程语言,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 请告诉我,如果我在这里做错了,任何见解和解决方案都会受到赞赏!!
答案 0 :(得分:1)
回顾一下:
换句话说,每个用户只有1个UserProfile。每所学校都有1个用户连接,该用户可以连接到多个学校(不确定是否需要,但这取决于用例)。每所学校都有多个教室。
您的目标是返回附加到用户的学校列表。我会这样做:
classroom_list = Classroom.objects.filter(school__user=User.objects.get(pk=0))
或在带有请求的视图中:
classroom_list = Classroom.objects.filter(school__user=request.user)