0

对最后一个问题道歉。应该更好地表达它。

我有三个班级,学生和另一个成人和成人档案。我想进行查询,以便获取所有来自美国的成年人,但必须使用 Student 类来完成。这是因为我的查询集是 Student.objects.all() 并且基于这个查询集,我想从 US 获取所有成年人(通过 AdultProfile)。这是一个代码示例,而原始代码更复杂、更长。这个例子显示了问题的要点。

class Student(models.Model):
   name = models.CharField(max_length=255)
   birthday= models.DateField(blank=True,null=True)

class Adult(models.Model):
   user = models.OneToOneField(User)
   parent= models.ForeignKey(Student,related_name="relationships")

class AdultProfile(models.Model):
   country = models.CharField(max_length=2)
   adult = models.OneToOneField(Adult,related_name='profile')

在这方面需要一些帮助..希望我这次措辞更好......

4

1 回答 1

1

您将无法从查询集中执行此操作Student。从 Student 类中获得 Adult 对象的唯一方法是通过其 reverse-related-accessor:来自Student 实例student_instance.relationships.all()

您的 django ORM 旅行中缺少的要素可能是您可以通过其related_name(或默认情况下为模型名称)查询相关对象(FK、OneToOne)。

student_qs = Student.objects.all() # some query
adults_in_us = Adult.objects.filter(parent__in=student_qs, profile__country='US')
于 2012-08-26T16:50:36.037 回答