En Django, tengo dos modelos:Cómo hacer esta consulta unirse a Django
class Product(models.Model):
name = models.CharField(max_length = 50)
categories = models.ManyToManyField(Category)
class ProductRank(models.Model):
product = models.ForeignKey(Product)
rank = models.IntegerField(default = 0)
puse la fila en una tabla separada, porque cada punto de vista de una página hará que el rango de cambiar y yo estaba preocupado que todas estas escrituras harían que mis otras consultas (mayormente leídas) se ralenticen.
que se reúnen una lista de Products
de una consulta sencilla:
cat = Category.objects.get(pk = 1)
products = Product.objects.filter(categories = cat)
quisiera ahora para obtener todas las filas de estos productos. Preferiría hacerlo todo de una vez (usando una combinación de SQL) y me preguntaba cómo expresar eso usando el mecanismo de consulta de Django.
¿Cuál es la forma correcta de hacer esto en Django?
Parece una optimización prematura. ¿Tiene alguna evidencia de perfilador de que "todas estas escrituras harían que mis otras consultas disminuyan la velocidad"? ¿O que ese efecto es peor que la desaceleración de los JOIN adicionales cuando necesitas leer el rango? Escríbelo de la manera más simple primero y no optimices hasta que hayas demostrado que es necesario. –