Pergunta

Eu tenho três classes gostaria de consulta.Eu gostaria de deixar o banco de dados fazer o trabalho.Seria possível executar uma consulta simples no objeto do Usuário, para obter todos os campos relacionados com o que combinar?Estou tentando evitar que une os três tabelas no meu código.Se eu fosse fazer isso no código, eu faria a consulta de todas as três classes, em seguida, eliminar os duplicados, mantendo as partidas.

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.
Foi útil?

Solução

Você não pode fazer isso sem unir as três tabelas.

User.objects.filter(modela__name=u'William', modelb__category=u'Single',
  modelc__alias=u'Bill')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top