Reputation: 1414
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
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
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