Pregunta

Tengo tres clases que me gustaría consultar.Me gustaría dejar que la base de datos haga el trabajo.¿Sería posible ejecutar una sola consulta en el objeto de usuario para obtener todos los campos relacionados que coinciden?Estoy tratando de evitar unirme a las tres tablas en mi código.Si tuviera que hacerlo en el Código, consultaría las tres clases y luego eliminaría los duplicados mientras mantendría los partidos.

Query: Get all users whose name contains "William", category is "Single" and alias is "Bill". 

class ModelA(models.Model):
    user = models.ForeignKey(User,related_name="%(class)s",null=False)
    name = models.CharField(max_length=70)

    def __unicode__(self):
        return u'%s' % (self.name)

class ModelB(models.Model):
    user = models.ForeignKey(User,related_name="%(class)s",null=False)
    category = models.CharField(max_length=70)

    def __unicode__(self):
        return u'%s' % (self.category)

class ModelC(models.Model):
    user = models.ForeignKey(User,related_name="%(class)s",null=False)
    alias = models.CharField(max_length=70)

    def __unicode__(self):
        return u'%s' % (self.alias)

Note: this is an example only, and I am not looking to combine all the info in a single table.

¿Fue útil?

Solución

No puedes hacer esto sin unir las tres tablas.

User.objects.filter(modela__name=u'William', modelb__category=u'Single',
  modelc__alias=u'Bill')

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top