gpt4 book ai didi

django - 检查用户帐户模型类型

转载 作者:行者123 更新时间:2023-12-02 04:29:31 24 4
gpt4 key购买 nike

检查已扩展 Django 用户模型的帐户的模型类型的最佳方法是什么?我有两种类型的用户帐户(比如说学生和教师),它们扩展了 django 用户模型:

class Student(models.Model):
student_bd = models.CharField(max_length=50)
student_user = models.ForeignKey(User)
...

class Teacher(models.Model):
teacher_bd = models.CharField(max_length=50)
teacher_user = models.ForeignKey(User)
...

那么,我如何知道 request.user 是学生还是教师?

最佳答案

User 表中没有保存关于 StudentTeacher 模型的数据,因此您必须查询相关的目的。

如果您不需要实际的个人资料(StudentTeacher 对象),最快的方法是使用 exists()相关集合上的函数:

if request.user.student_set.exists():
# student
elif request.user.teacher_set.exists():
# teacher

如果您知道稍后将需要配置文件对象,那么在 Python 中获取结果并检查现有对象会更快:

if request.user.student_set.all():
# do something with student_set
elif request.user.teacher_set.all():
# do something with teacher_set

旁注:如果您的用户不应该拥有多个相关的 StudentTeacher 对象,那么使用 OneToOneField 代替可能是一个更好的主意一个外键。这样,您就不必担心 all() 等,而只需使用 user.studentuser.teacher 访问相关模型实例即可。这还允许您使用 select_lated,以便在单个查询中获取用户对象和学生或教师对象。

关于django - 检查用户帐户模型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24306201/

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