Iscriviti a Django che condividono lo stessoKey Foreign
-
11-12-2019 - |
Domanda
Ho tre classi che mi piacerebbe interrogare.Vorrei lasciare che il database faccia il lavoro.Sarebbe possibile eseguire una singola query sull'oggetto utente per ottenere tutti i campi correlati che corrispondono?Sto cercando di evitare di unirsi alle tre tavole nel mio codice.Se dovessi farlo nel codice, sparirei tutte e tre le classi elimineremo i duplicati mantenendo le partite.
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.
. Soluzione
Non puoi farlo senza unire i tre tavoli.
User.objects.filter(modela__name=u'William', modelb__category=u'Single',
modelc__alias=u'Bill')
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow