como usar o filtro no django

votos
1

Estado classe (models.Model): valor someid = models.IntegerField () = models.IntegerField () status_msg = models.CharField (max_length = 2000)

so my database look like:
 20     1234567890   'some mdg'
 20     4597434534   'some msg2'
 20     3453945934   'sdfgsdf'
 10     4503485344   'ddfgg'

então eu tenho que buscar valores conter uma dando someid entre alguns valores. então vamos dizer

  val1 = '1234567890'
    val2  = '4414544544'

por isso o meu resultado final deve ser uma lista contendo de 2 de entrada para id = 20 como implementar isso.

Eu tentei usar

list = Status.objects.filter(someid = 20, value < val2, value > val1) 

que é errado? Como consertar isto.

obrigado.

Publicado 18/05/2009 em 07:05
fonte usuário
Em outras línguas...                            


2 respostas

votos
10

O Django consulta API não usar operadores de comparação tradicionais. Ele usa (campo) __ (operatorname) = (valor) sintaxe estilo.

Sua consulta seria:

list = Status.objects.filter(someid=20, value__lt=val2, value__gt=val1)

Veja Django Docs on Fazendo Queries

Respondeu 18/05/2009 em 07:17
fonte usuário

votos
3

Você também pode usar o * __ lookup gama :

list = Status.objects.filter(someid=20, value__range=(val1+1, val2-1))

Esteja ciente, pesquisas de alcance são 'inclusiva', então você tem que adaptar os limites do intervalo. Se for o caso, como acima, isso deve resultar na mesma lista como postado por Imran. consultas de intervalo também trabalham com datas.

Respondeu 18/05/2009 em 10:28
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more