Harsh
Harsh

Reputation: 43

How do I filter this in Django ORM

Here is my models.py

class Category(models.Model):
    name = models.CharField(max_length=200, default='')
    slug = models.SlugField(max_length=100,default='',unique=True)

    def __unicode__(self):
        return self.name


class SubCategory(models.Model):
    category = models.ForeignKey(Category)
    name = models.CharField(max_length=200, default='')
    slug = models.SlugField(max_length=100,default='',unique=True)


class TutorInfo(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=255, default='')
    category = models.ManyToManyField(Category, related_name='categories')
    about = models.TextField(default='')


class Course(models.Model):
    user = models.ForeignKey(User)
    category = models.ForeignKey(Category)
    sub_category = models.ForeignKey(SubCategory)
    course_name = models.CharField(max_length=255, default='')

Now I want to filter the TutorInfo such that sub_category matches the sub_category in their added Course. A Tutor can have more than one Course. Is it possible to write such a query? If not then please advice me what alterations should I do in the models.py

Upvotes: 0

Views: 63

Answers (1)

abidibo
abidibo

Reputation: 4287

If 1 is the id of the sub_category you're interested in, use

TutorInfo.objects.filter(user__course__sub_category__id__exact=1)

whether if sc is the sub_category model instance:

TutorInfo.objects.filter(user__course__sub_category=sc)

Upvotes: 1

Related Questions