digamos que tengo un modelo de dirección con un campo de código postal. Me puede buscar direcciones con el código postal que comienza con "123" con esta línea:Django startswith en los campos
Address.objects.filter(postcode__startswith="123")
Ahora, tengo que hacer esta búsqueda del "revés". Tengo un modelo de Dirección con un campo de prefijo de código postal, y necesito recuperar todas las direcciones para las cuales el prefijo de código postal es un prefijo de un código dado, como "12345". Entonces, si en mi base de datos tengo 2 direcciones con postcode_prefix = "123" y "234", solo se devolverá la primera.
Algo así como:
Address.objects.filter("12345".startswith(postcode_prefix))
El problema es que esto no funciona. La única solución que puedo llegar a es realizar un filtro en el primer carácter, como:
Address.objects.filter(postcode_prefix__startswith="12345"[0])
y luego, cuando llegue a los resultados, hacer una lista por comprensión de que las filtra adecuadamente, así:
results = [r for r in results if "12345".startswith(r.postcode_prefix)]
¿Hay una mejor manera de hacerlo en django? gracias, Fabricio
¿La longitud del prefijo está fija o tiene longitud variable? – cyroxx
longitud variable :) – sfabriz