Puede utilizar exclude()
en lugar de filter()
:
Entry.objects.exclude(name__contains="SomeString")
("Dame todas las entradas excepto aquellos con names
que contiene "someString")
Y cuando se trata de objetos Q puede utilizar" ~ "símbolo antes del objeto Q para representar la negación. Por ejemplo, la siguiente declaración significa" darme todas las entradas con names
que contenga "Elefante", pero que no contenga "SomeString":
Entry.objects.filter(Q(name__contains="Elephant") & ~Q(name__contains="SomeString"))
En algunos casos es posible que desee utilizar ambos métodos:
Entry.objects.exclude(Q(name__contains="Elephant") & ~Q(name__contains="SomeString"))
("dame todas las entradas, excepto aquellos con names
que contiene 'elefante', pero que no contiene 'someString')
¡Genial! eso es exactamente lo que necesitaba, aunque no se puede usar dentro de un objeto Q, uno simplemente puede encadenar los filtros juntos: q = Q (title__contains = "SomeTerm") TheModel.objects.filter (q) .exclude (title__contains = "SomeTermWeDontWant") Gracias! –