一般处理方式

在我们完成项目当中通常遇见两表之间需要对应数据,我们首先可以创建a和b表,我们在对a表进行相关业务操作想要b表的详细数据可以在它下面创建外键在a表创建返回数据

def courses(self):
  from apps.courses.models import Coure#导入b一张表
  courses = Course.object.filter(course_org=self)#Django的查询方式其中course_org是创建的外键,self就是的a表的实例化本身
  return courses#返回数据

运用Django的更好的方式

我们除了利用这样的方式返回数据还可以利用Django早已做好的方式返回,这种方式并不需要导包

def courses(self):
  courses = self.course_set.all()
  return courses

这一段是什么意思呢,是如何生成的呢

我们可以通过Debug来查看它的属性self就是一个对象它就是a表,course_set注意它是一个动态的名字,可以把它理解为Django中的object,然后进行all取值,那它的名字是如何来的呢

字段名的来源

可以看到course_set前面的字段就是b表的名字小写,后面加了一个set,我们的这个函数是创建在a表下面的,a表被设为外键他就去查有外键的表,意思就是它做了一个反向查找来查谁建立了a表外键,拿到表名加上set,就形成了这个名字

posted on 2022-08-25 10:21  一纸荒年003  阅读(172)  评论(0编辑  收藏  举报