如何在Django ORM中过滤它

时间:2015-03-05 14:49:02

标签: python sql django django-orm

这是我的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='')

现在,我想过滤TutorInfosub_categorysub_category添加的Course相匹配。 Tutor可以有多个Course。是否可以编写这样的查询?如果没有,那么请告诉我在models.py

中应该做些什么改动

1 个答案:

答案 0 :(得分:1)

如果1是您感兴趣的sub_category的id,请使用

TutorInfo.objects.filter(user__course__sub_category__id__exact=1)

是否sc是sub_category模型实例:

TutorInfo.objects.filter(user__course__sub_category=sc)