私は照会したい3つのクラスがあります。私はデータベースに作業をさせたいと思います。 Userオブジェクトに対して1つのクエリを実行して、関連するすべての関連フィールドを取得することは可能でしょうか?私は自分のコードで3つのテーブルに参加することを避けようとしています。私がコード内でそれをやろうとすれば、私は3つのクラスをすべて照会し、一致を維持しながら重複を排除します。同じForeignKeyを共有するDjangoのテーブルを結合する
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.
「自分のコードで3つのテーブルを結合しないようにする」と言うと、明示的に(例えば生のSQLを書くことによって)意味するのか、それとも全く意味するのですか?ジョインを持つソリューションに向かっているように聞こえるので、 ORMを介して行うことは可能であるはずです。 –