Django基础入门⑪:DjangoDjango数据表关联(一对一,一对多,多对多关系)
from django.db import models
# 用户信息表
class UserInfo(models.Model):
username = models.CharField(max_length=30)
password = models.CharField(max_length=30)
# 用户详情表
class UserDetail(models.Model):
phone = models.CharField(max_length=11)
user = models.OneToOneField(UserInfo, on_delete=models.CASCADE) # 一对一关系
# 订单信息表
class OrderInfo(models.Model):
order_id = models.CharField(max_length=30)
user = models.ForeignKey(UserInfo, on_delete=models.CASCADE) # 一对多关系
# 订单详情表
class OrderDetail(models.Model):
product = models.CharField(max_length=30)
price = models.DecimalField(max_digits=7, decimal_places=2)
order = models.ForeignKey(OrderInfo, on_delete=models.CASCADE) # 一对多关系
# 订单支付表
class Payment(models.Model):
order = models.ForeignKey(OrderInfo, on_delete=models.CASCADE)
pay_time = models.DateTimeField(auto_now_add=True)
# 多对多关系示例
class Book(models.Model):
title = models.CharField(max_length=30)
authors = models.ManyToManyField(UserInfo) # 多对多关系
这个示例代码展示了如何在Django中定义一对一、一对多和多对多的数据库关系。在UserInfo
和UserDetail
之间有一对一关系,OrderInfo
和OrderDetail
之间也有一对多关系,而OrderInfo
和Payment
之间也是一对多关系。同时,Book
和UserInfo
之间有多对多关系。这些关系在数据库中通过外键实现,并且在删除数据时设置了级联删除的选项on_delete=models.CASCADE
。
评论已关闭