2016-07-13 3 views
0

私はDjangoオブジェクトのフィルタリングで以下のような解決策を試してきましたが、運がない。複雑な関係でオブジェクトを取得するDjango

個人のプライマリキーを利用して、すべてのマイルストーンのオブジェクトリストを作成したいと思います。

私のモデルは、次のようなレイアウトされています

TEAM MEMBER -- owns many tasks through --> OWNER -- -- > TASKS -- each task has multiple milestones --> MILESTONES 

モデルは以下の通りである:私のために

class TeamMember(models.Model): 
    member_name = models.CharField(max_length=140) 
    email = models.EmailField() 
    task= models.ManyToManyField(Task, through='Owner') 

class Owner(models.Model): 
    teammember = models.ForeignKey(TeamMember, on_delete=models.CASCADE) 
    task = models.ForeignKey(Task, on_delete=models.CASCADE) 

class Task(models.Model): 
    task_name = models.CharField(max_length=140) 
    task_description = models.TextField(null=True, blank=True) 
    last_updated = models.DateTimeField(null=True, blank=True) 

class Milestone(models.Model): 
    name = models.CharField(max_length=140) 
    task= models.ForeignKey(Task, on_delete=models.CASCADE) 
    expected_date = models.DateTimeField() 

次doesntの仕事:

Milestones.objects.filter(teammember__id) 

任意のアイデア?

+0

実際のモデルコードを掲載してください。あなたが提供した情報から再作成することはできません。 – solarissmoke

+0

上記のモデルを掲載しました – NickP

答えて

1

複数のdouble.underscoreの手順を使用する必要があります。実際のコードは、モデルとフィールドの名前によって異なります。 のような何か: Milestones.objects.filter(task__owner__teammember__id=1)

0

Iあなたは次のように値のクエリセット内のフィールドを定義することによって、それを得ることができ、特定のメンバーのためのマイルストーンデータを取得したい:私はそれをテストしていない

TeamMember.objects.filter(id=1).values 
('task__milestone','owner__task__milestone', 
'task__milestone__expected_date','task__milestone__name') 

が、確かにそれはすべての関連情報を取得します。

関連する問題