目录
-
模型
;⼀个买家可以购买多件商品,⼀件商品可以被多个买家购买,买家和商品之间构成 ;多对多关系,多对多关系必然会⽣成⼀张中间表:买家-商品表,记录商品和买家 ;的关系,该表包含商品表主键和买家表的主键 from django.db import models # Create your models here. class Buyer(models.Model): bname = models.CharField(max_length=30) level = models.IntegerField(default=1) class Goods(models.Model): gname = models.CharField(max_length=100) price = models.FloatField() buyer = models.ManyToManyField(Buyer) #这种写法⾃动⽣成第三张表,但 我们⽆法直接控制 def __str__(self): return self.gname +" "+ str(self.price) #⼿动创建中间表 class Orders(models.Model): buyer = models.ForeignKey(Buyer,on_delete=models.CASCADE,db_column='bid') goods = models.ForeignKey('Goods',on_delete=models.CASCADE,db_column='gid') num = models.Integer(default=1) class Goods(models.Model): gname = models.CharField(max_length=100) price = models.FloatField() buyer = models.ManyToManyField(Buyer,through='Orders')
-
增加
def sellgoods(req): goods = Goods.objects.get(pk=randint(1,Goods.objects.count())) goods.buyer.add(Buyer.objects.get(pk=randint(1,Buyer.objects.count()) )) goods.save() return HttpResponse("剁⼿成功")
-
删除
buyer = Buyer.objects.get(pk=13) goods = Goods.objects.filter(pk__lt=10) buyer.goods_set.clear() #删除所有商品 buyer.goods_set.remove(Goods.objects.get(pk=2)) #删除指定商品
-
正反向查询
# 正向查询 def findgoods_by_buyer(req): buyer = Buyer.objects.get(pk=13) res = buyer.goods_set.all() print(res) return HttpResponse("由买家查询商品") # 反向查询 def findbuyer_by_goods(request): goods = Goods.objects.last() buyer = goods.buyer.all() print(buyer) return HttpResponse("由商品查询买家")