Soy nuevo en django orm. Tengo mesas así.

class Product(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4)
   name = models.CharField(max_length=60)

class ProductOption(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4)
   product_id = models.ForeignKey(Product, on_delete=models.CASCADE, null=True, blank=True)

Me gustaría consultar la identificación de la opción de producto relacionada con el producto. Hice una consulta como esta para hacer una unión interna.

Query = Product.select_related(‘product_id’).filter(name='a')

Y me da un mensaje de error que dice

django.core.exceptions.FieldError: Invalid field name(s) given in select_related: 'product_id'. Choices are: (none)

Quiero saber si hay algún problema en los modelos o la consulta.

0
user6922072 14 nov. 2017 a las 06:02

2 respuestas

La mejor respuesta

Utilice prefetch_related

Product.objects.filter(name='a').prefetch_related('productoption_set')
0
Satendra 14 nov. 2017 a las 08:06

No es así como se consulta un objeto relacionado. Dado que usó una clave externa y si lo entiendo correctamente, probablemente desee usar algo como esto:

 Product.objects.filter(name='a').productoption_set.all()
0
scharette 14 nov. 2017 a las 03:25