加入Django中的表,分享相同的FookEyKey
-
11-12-2019 - |
题
我有三个我想查询的课程。我想让数据库完成工作。是否有可能在用户对象上运行单个查询,以获取所有与匹配的相关字段?我正在尝试避免在我的代码中加入三个表。如果我要在代码中执行它,我会查询所有三个类,然后在保持匹配的同时消除重复项。
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.
. 解决方案
你不能在没有加入三个表的情况下这样做。
User.objects.filter(modela__name=u'William', modelb__category=u'Single',
modelc__alias=u'Bill')
. 不隶属于 StackOverflow