1增
1.1 一对一
#方式一:
obj = models.DetailAuthorInfo.objects.create(
d_birth='1993-02-24',
d_telepho='13952551087',
d_addr='江西省赣州市'
)
models.Author.objects.create(
a_name='Paul',
a_age=30,
authorDetail=obj
)
#方式二:
obj = models.DetailAuthorInfo.objects.filter(d_addr='青海省').last()
models.Author.objects.create(
a_name='老狼',
a_age=45,
authorDetail_id=obj.d_id
)
1.2 一对多(同理也有两种方式)
obj = models.Publisher.objects.get(p_id=3)
models.Book.objects.create(
b_date='1999-09-09',
b_price=67.34,
b_title='春天里的故事',
publish_id=obj.p_id
)
1.3 多对多(同理也有两种方式)
'''方式一'''
obj = models.Book.objects.filter(b_title='春天里的故事')[0]
obj.authors.add(*[1,2,3])
'''方式二'''
book_obj = models.Book.objects.get(b_id=1)
authors1 = models.Author.objects.get(a_id=2)
authors2 = models.Author.objects.get(a_id=4)
book_obj.authors.add(*[authors1, authors2])
2删
2.1 一对一(分两种情况)
# 表一外键关联到表二,表一删除,不影响表2,表2删除会影响表1
# 删寄生物(Author),不影响宿主(DetailAuthor)
models.Author.objects.get(a_id=1).delete() #情况一(删寄生虫)
models.DetailAuthorInfo.objects.get(d_id=2).delete() #情况二(删宿主)
2.2 一对多
models.Publisher.objects.get(p_id=1).delete() #它是大腿,删除它,会影响其他表
models.Book.objects.filter(b_title__startswith='哈利波特').delete() #删除它,不会影响其他表
2.3 多对多
# 多对多
obj = models.Book.objects.get(b_id=6)
#.remove可以一次性删除一个或多个
obj.authors.remove(3)
obj.authors.remove(*[3,4])
obj.authors.clear()
obj.authors.add(*[3,])
#.set删除后载更新
obj.authors.set('4')
obj.authors.set(['5', '6'])
3 该(更新)
3.1 一对一
# 一对一,可以全部更新,也可以部分更新
models.Author.objects.filter(a_id=5).update(
a_name = 'Curry',
a_age = 32,
authorDetail_id = 1,
)
3.2 一对多
# 一对多,可以全部更新,也可以部分更新
models.Book.objects.filter(b_id=7).update(
b_title = '我是谁,我在哪里?',
publish_id = 2,
)
# 因为级联,所以不能更改
'''
models.Publisher.objects.filter(p_id=2).update(
p_id = 666,
)'''
3.3.3 多对多
.set(同上)