Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
举例:现有两张表,Store表和Category表。Store表中的字段有商家名称,商家详情信息等信息。而Category表中有商品类别信息。可以知道一个商家可以有多个商品类别,一个类别中也可以包含多个商品,所以这两张表的关系就是多对多的关系。
from django.db import models
class Goods(models.Model):#商品
name = models.CharField(max_length=20)
price = models.DecimalField(max_digits=5, decimal_places=2)
gc = models.ForeignKey("Category", null=True, on_delete=models.SET_NULL)#gc为外键,类别表为母表
class Category(models.Model):#类别
name = models.CharField(max_length=20)
class Store(models.Model):#商家
name = models.CharField(max_length=30)
detail = models.TextField(blank=True, null=True)
sc = models.ManyToManyField("Category")#与类别表进行多对多关联
增
# 添加商家
Store.objects.create(name="商家A", detail="物美价廉,限时抄底折扣")
Out[2]: <Store: Store object>
Store(name="商家B", detail="大促销").save()
# 添加类别
Category.objects.create(name="电脑整机")
<Category: Category object>
Category(name="文具").save()
多对多重点在于关系表的对应关系变更
# 创建商家C添加全部分类
Store.objects.create(name="商家C").sc.add(*(Category.objects.all()))#如果商户已存在则把create改成get
store = Store.objects.get(name="商家C")
store.sc=(Category.objects.all())
store.save()
# 创建商家D添加指定分类
store = Store.objects.create(name="商家D")
category = Category.objects.filter(name__in=["电脑整机","文具"])#单个改成get,全部改成all
store.sc.add(*category)#add是追加模式
store.sc.clear()#清空此商家的商品
#让指定商品分类添加指定的商家,反向查询
store = Store.objects.create(name="商家E")
category = Category.objects.get(name="电脑整机")
category.store_set.add(store)
# 让所有商家都添加这个分类
stores = Store.objects.all()
category = Category.objects.get(name="电脑整机")
category.store_set.add(*stores)
#让所有商家去除这个分类
category.store_set.clear()
# 删除store_set的所有商家
category.store_set.all().delete()
#只有子表才有"子表名小写_set"的写法,得到的是一个QuerySet集合,后边可以接.add(),.remove(),.update(),.delete(),.clear()
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有