外键属性上的 Django 过滤

我试图根据 ForeignKey的特定字段的值过滤 Django 中的一个表。

例如,我有两个模型:

class Asset(models.Model):
name = models.TextField(max_length=150)
project = models.ForeignKey('Project')


class Project(models.Model):
name = models.TextField(max_length=150)

我想根据相关项目的名称筛选我的资产列表。

目前,我正在执行 查询:

project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
project__in=project_list).order_by('desc')

我想知道是否有一种方法可以在主查询中指定这种过滤?

165614 次浏览

这是可能的,因为 queryset-refactor分支在1.0之前着陆。 4088号票暴露了问题。这应该可以工作:

Asset.objects.filter(
desc__contains=filter,
project__name__contains="Foo").order_by("desc")

Django 多对一文档提供了使用 ModelAPI 跟踪外键的示例和其他示例。

Asset.objects.filter( project__name__contains="Foo" )
student_user = User.objects.get(id=user_id)
available_subjects = Subject.objects.exclude(subject_grade__student__user=student_user) # My ans
enrolled_subjects = SubjectGrade.objects.filter(student__user=student_user)
context.update({'available_subjects': available_subjects, 'student_user': student_user,
'request':request, 'enrolled_subjects': enrolled_subjects})

在我上面的申请中,我假设一旦一个学生被注册,一个 SubjectClass 实例将被创建,其中包含被注册的学科和学生本人。

学科-学生用户模型是学科成绩模型的外部关键。

在“ able _ subject”中,我通过检查所有具有“ Student”属性作为当前 Student _ user 的学科实例,排除了当前 Student _ user 已经注册的所有学科

附言。如果因为我的解释你还是不能理解的话,我提前道歉。这是我能提供的最好的解释。非常感谢