【发布时间】:2020-11-28 17:31:43
【问题描述】:
单行代码即可获取外键对象,而不是 UUID 的 QuerySet。
我有三个模型,
Student, College, Member
模型的定义类似于下面
class Student(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name=models.CharField(max_length=128)
class College(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name=models.CharField(max_length=128)
class Member(models.Model):
student= models.ForeignKey(Student, related_name="students", on_delete=models.CASCADE)
college= models.ForeignKey(College, related_name="colleges", on_delete=models.CASCADE)
其中 Member 包含 Student 和 College 作为外键字段
现在我想根据应从 Member 模型中过滤掉的 college_id 获取属于特定学院的所有学生
我现在过得怎么样
student_ids = Member.objects.filter(college_id=college_id).values("student")
现在students 是学生 UUID 列表的查询集
因为我需要实际的学生对象而不是 UUID 的 QuerySet 列表
students = Student.objects.filter(id__in=[str(uid) for uid in student_ids])
我觉得这是一种不恰当的方式。任何人都可以建议一行代码来获取外键对象而不是 UUID 的 QuerySet。提前致谢
【问题讨论】:
标签: python-3.x django database postgresql django-orm