一对多是父子关系,一个父亲可以有多个儿子,但一个儿子只能有一个父亲。
定义方法:1.如果是写在同一个modles.py里,父表要排在子表前,因为python是至上而下的运行。
2.类的关联关系ForeignKey(“父表模型名”)
class Author(models.Model):(父表)
name =models.CharField(max_length=100)
class Book(models.Model):(子表)
title =models.CharField(max_length=100)
author =models.ForeignKey("Author") #关联
使用方法:1.特定查询<django>这本书的作者
book= Book.objects.get(title="Django")
author = book.author #获取该图书的作者
2.获取该作者的所有书: books= author.book_set.all() # 获取该作者的所有图书
book_set.all() 这个是查询外键关联的所有,book(父表模型名的英文小写_set)_set.all()
父表模型名的英文小写_set)_set.all() 这个方法查询出的数据类似于objects,所有野可以使用很多查询方法,如all,first等
如果在外键关联的时候,使用了related_name='',在查询时,就直接使用这里取得名字.all(),一但指定(父表模型名的英文小写_set)就失效,.
author =models.ForeignKey("Author",related_name='books') #关联
当然,我们也可以用前面定义的books来为表添加数据(表字段要可以为空):
0
登陆后方可评论