0

最後の質問についてお詫びします。もっとうまく表現すべきだった。

私には3つのクラスがあります。Studentともう1つのAdultとAdultProfileです。米国出身のすべての成人を取得するようにクエリを作成したいのですが、Studentクラスを使用して実行する必要があります。これは、私のクエリセットがStudent.objects.all()であり、このクエリセットに基づいて、米国からすべての成人を(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オブジェクトを取得する唯一の方法は、Studentインスタンスからそのreverse-related-accessorを介して取得することですstudent_instance.relationships.all()

related_namedjango ORMの移動に欠けている要素は、おそらく、関連するオブジェクト(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 に答える