Django外键操作
Django中外键增删改查
外键字段的增删改查
1、auto_now=False,如果设置为True, 在更新当前记录的数据时候,会自动更新时间
auto_now_add=False,如果设置为True,当插入数据的时候,会把当前时间自动添加进去
publish_time = models.DateTimeField(auto_now=True)
2、针对多对多,一对一
增
# 如何给书籍添加作者? book_obj = models.Book.objects.filter(pk=1).first() # print(book_obj.authors) # 就类似于你已经到了第三张关系表了 # book_obj.authors.add(1) # 书籍id为1的书籍绑定一个主键为1 的作者 # book_obj.authors.add(2,3) # author_obj = models.Author.objects.filter(pk=1).first() # author_obj1 = models.Author.objects.filter(pk=2).first() # author_obj2 = models.Author.objects.filter(pk=3).first() # book_obj.authors.add(author_obj) # book_obj.authors.add(author_obj1,author_obj2) """ add给第三张关系表添加数据 括号内既可以传数字也可以传对象 并且都支持多个 """
删
# 删 # book_obj.authors.remove(2) # book_obj.authors.remove(1,3) # author_obj = models.Author.objects.filter(pk=2).first() # author_obj1 = models.Author.objects.filter(pk=3).first() # book_obj.authors.remove(author_obj,author_obj1) """ remove 括号内既可以传数字也可以传对象 并且都支持多个 """
改
# 修改 # book_obj.authors.set([1,2]) # 括号内必须给一个可迭代对象 # book_obj.authors.set([3]) # 括号内必须给一个可迭代对象 # author_obj = models.Author.objects.filter(pk=2).first() # author_obj1 = models.Author.objects.filter(pk=3).first() # book_obj.authors.set([author_obj,author_obj1]) # 括号内必须给一个可迭代对象 """ set 括号内必须传一个可迭代对象,该对象内既可以数字也可以对象 并且都支持多个 """
清空
# 清空 # 在第三张关系表中清空某个书籍与作者的绑定关系 book_obj.authors.clear() """ clear 括号内不要加任何参数 """