Estoy tratando de filtrar una tabla en Django según el valor de un campo particular de un ForeignKey
.
Por ejemplo, tengo dos modelos:
class Asset(models.Model):
name = models.TextField(max_length=150)
project = models.ForeignKey('Project')
class Project(models.Model):
name = models.TextField(max_length=150)
Me gustaría filtrar mi lista de activos según el nombre del proyecto asociado.
Actualmente, estoy realizando dos consultas:
project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
project__in=project_list).order_by('desc')
Me pregunto si hay alguna forma de especificar este tipo de filtrado en la consulta principal.
django
django-models
django-queryset
Fraser Graham
fuente
fuente
contains
describe el tipo de comparación utilizada en la consulta que produce el ORM de django, probablemente se verá el sqlLIKE '%Foo%'
.Esto ha sido posible desde que la
queryset-refactor
sucursal aterrizó antes de la 1.0. El ticket 4088 expuso el problema. Esto debería funcionar:La documentación de Django Many-to-one tiene este y otros ejemplos de las siguientes claves externas utilizando la API del modelo.
fuente
En mi solicitud anterior, asumo que una vez que un estudiante está inscrito, se creará una instancia de SubjectGrade de asignatura que contiene la asignatura inscrita y el estudiante mismo.
El modelo Subject and Student User es una clave externa para el modelo SubjectGrade.
En "available_subjects", excluí todas las asignaturas que ya están inscritas por el student_user actual marcando todas las instancias de asignatura que tienen el atributo "student" como el student_user actual
PD. Disculpas de antemano si aún no puedes entender debido a mi explicación. Esta es la mejor explicación que puedo dar. Muchas gracias
fuente