以Book表、Author表、Publish(出版社)表为例
外键建在多的一方
class Book(models.Model):
name=models.charField(max_length=20)
publish=models.ForeignKey("Publish") #django会默认在数据库中的外键加个_id
class Publish(models.Model):
name=models.CharField(max_length=100)
class Author(models.Model):
name=modles.CharField(max_length=40)
执行python manage.py makemigrations创建数据库
多表操作(一对多)
1、添加
def addbook():
Book.objects.create(name="python",publish_id=2)
return HttpResponse("添加成功")
2、对publish直接赋值,publish后面跟一个对象
publish_id=Publish.objects.filter(name="昆明出版社")[0]
Book.objects.create(name="python",publish_id=publish_id)
3、多表添加(多对多)
书本和作者表(多对多)
models.py中代码如下:
(1)例如:书本名称为天涯明月刀,作者为古龙、倪匡
首先从book表中查询出天涯明月刀这本书,从作者表种查找出古龙和倪匡两位作者,执行book.author.add()
代码如下(查找出的数据都只能有一条,用get):
def addduo_duo(request):
book_1=Book.objects.get(name="天涯明月刀")
author1=Author.objects.get(name="古龙")
author2=Author.objects.get(name="倪匡")
book_1.author.add(author1,author2)
return HttpResponse("添加成功")
添加成功以后数据库中的数据如下所示: