Question

J'ai trois cours que je voudrais interroger.Je voudrais laisser la base de données faire le travail.Serait-il possible d'exécuter une seule requête sur l'objet utilisateur pour obtenir tous les champs associés correspondant?J'essaie d'éviter de rejoindre les trois tables de mon code.Si je devais le faire dans le code, je interrogerais les trois classes puis éliminer les duplicats tout en conservant les matchs.

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.

Était-ce utile?

La solution

Vous ne pouvez pas faire cela sans rejoindre les trois tables.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top