django一对多学习笔记ForeignKey


发布时间:2019-02-15 13:08    作者: 晖哥哥   已过去:4 年,1 月   阅读总量:1139 已被赞:0


一对多是父子关系,一个父亲可以有多个儿子,但一个儿子只能有一个父亲。

定义方法: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




登陆后方可评论