一般处理方式
在我们完成项目当中通常遇见两表之间需要对应数据,我们首先可以创建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,就形成了这个名字