首先在models中创建两张表,一张书信息表,一张出版社信息表,对应关系为一对多
class Book(models.Model):
title = models.CharField(max_length=64)
price = models.IntegerField()
color = models.CharField(max_length=64)
#null =True 允许字段为空, blank=True django对数据自动验证不为空,所以需设置blank属性,传输该字段时可以为空
page = models.IntegerField(null=True,blank=True)
publisher = models.ForeignKey("Publisher",on_delete=models.CASCADE) #关联表外键,一对多关系,on_delete属性防止两个表数据重复 #接收关联表对象
author = models.ManyToManyField("Author") #多对多关系
def __str__(self):
return "%s"%[self.title,self.price,self.color,self.page,self.publisher]
class Publisher(models.Model):
name = models.CharField(max_length=128)
city = models.CharField(max_length=128)
def __str__(self):
return super().__str__()
当出版社信息表中没有数据时,创建Book信息表:
Book.objects.create(
title="老人与海",
price=19.6,
color= "blue",
page = 600,
publisher_id=1,
# publisher= publisher[0]
)
报错信息为:
django.db.utils.IntegrityError: FOREIGN KEY constraint failed
解决方案:
需要在Publisher表中先新增数据才可以创建外键