Estou tentando filtrar uma tabela no Django com base no valor de um campo específico de a ForeignKey
.
Por exemplo, tenho dois 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)
Gostaria de filtrar minha lista de ativos com base no nome do projeto associado.
Atualmente, estou realizando duas consultas:
project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
project__in=project_list).order_by('desc')
Estou me perguntando se existe uma maneira de especificar esse tipo de filtragem na consulta principal?
django
django-models
django-queryset
Fraser Graham
fonte
fonte
contains
descreve o tipo de comparação usado na consulta que o django ORM produz, o sql provavelmente será semelhanteLIKE '%Foo%'
.Isso tem sido possível desde que a
queryset-refactor
agência chegou ao pré-1.0. O ingresso 4088 expôs o problema. Isso deve funcionar:A documentação do Django muitos-para-um tem este e outros exemplos das seguintes chaves estrangeiras usando a API do modelo.
fonte
Em minha aplicação acima, presumo que, uma vez que um aluno esteja matriculado, uma instância de SubjectGrade da disciplina será criada contendo a disciplina matriculada e o próprio aluno.
O modelo Assunto e Usuário Aluno é uma chave estrangeira para o modelo SubjectGrade.
Em "available_subjects", eu excluí todas as disciplinas que já estão matriculadas pelo student_user atual, verificando todas as instâncias de subjectgrade que têm o atributo "student" como o student_user atual
PS. Peço desculpas antecipadamente se você ainda não consegue entender por causa da minha explicação. Esta é a melhor explicação que posso fornecer. muito obrigado
fonte