gpt4 book ai didi

python - 如何访问链接的父模型的数据库模型字段,例如类(class)->学校->用户?

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:37 27 4
gpt4 key购买 nike

我对编程语言、django 和数据库模型相当陌生。所以我的问题很简单我在 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”。我尝试过使用

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

有什么方法可以从类模型访问用户模型的字段,因为它通过外键链接为类->学校->用户如果我在这里做错了什么,请告诉我任何见解和解决方案,我们将不胜感激!!

最佳答案

简单回顾一下:

  • 用户 - UserProfileInfo = 1:1
  • 学校 - 用户 = 1:N
  • 类 - 学校 = 1:N

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

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

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

或者如果在有请求的 View 中:

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

关于python - 如何访问链接的父模型的数据库模型字段,例如类(class)->学校->用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47338679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com