【发布时间】:2017-12-17 17:34:06
【问题描述】:
class parent(models.Model):
ap=models.CharField(max_length=10)
user=models.CharField(max_length=10)
class Meta:
unique_together=(("ap","user"),)
db_table='parent'
class child(models.Model):
userkey=models.ForeignKey(parent,on_delete=models.CASCADE,db_column="ap")
pn=models.CharField(max_length=10)
st=models.CharField(max_length=10,default='Y')
def get_ap(self):
return self.ap.ap
def get_pn(self):
return self.pn
class Meta:
db_table="child"
unique_together=(('userkey','pn'),)
假设我有 ap="apkey" 然后我可以通过以下查询访问“apkey”的所有子模型对象。
child_obj=child.objects.filter(userkey__ap="apkey")
这也可以在不使用外键关系的情况下完成,如下所示。
parent_obj=parent.objects.get(ap="apkey")
child_obj=child.objects.filter(userkey=parent_obj)
我必须知道的是,在这两种方法中执行查询时发生了多少数据库访问。 ?
第二个,我们知道它访问一次父表,然后访问一次子表。因此实际上发生了两个sql查询。
第一个呢?
【问题讨论】:
标签: mysql django python-2.7 django-models