NickP
NickP

Reputation: 1414

Fetching objects in complex through relationship Django

I have been trying numerous things to solve the following in Django object filtering but thus no luck.

Utalizing a primary key for an individual, I would like to build an object list of all their milestones.

My models are laid out as such:

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

The models are shown below:

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()

The following doesnt work for me:

Milestones.objects.filter(teammember__id)

Any ideas?

Upvotes: 0

Views: 27

Answers (2)

ashok
ashok

Reputation: 43

I you want to get milestone data for a particular member , you can get it by defining the fields in value queryset as follows:

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

I did not test it , but surely it will get all the related information.

Upvotes: 0

sphere
sphere

Reputation: 1350

You need to use multiple double.underscore steps. Actual code depends on your exact model and field names. Something like: Milestones.objects.filter(task__owner__teammember__id=1)

Upvotes: 1

Related Questions