python 外键用法 多对多关系 ORM操作 模板相关
2021-07-03 17:05
标签:sel 获取 format ade tle obj self query -- 一.app/models中写类(设计表结构) 1.普通类 class A(models.Model): id=modles.AutoField(primary_key=True) name=models.CharField(max_length=32,unique=True) 2.设置外键 class B(models.Model): id = models.AutoField(primary_key=True) a=models.ForeignKey(to=A,on_delete=models.CASCADE) B必须写在A后面 a=models.ForeignKey(to=‘A‘,on_delete=models.CASCADE) 加引号可以不按顺序写 def __repr__(self): return "".format(self.name) 3.设计多对多关系表 class C(models.Model): name=models.CharField(max_length=32,unique=True) bs=models.ManyToManyField(‘B‘) def __repr__(self) return " __str__=__repr__ 二.ORM操作 1.查 models.A.objects.get(id=1,name=‘xx‘) # 获取一个对象 —— 》一个对象 没有或多个会报错 models.A.objects.all() #获取所有对象 —— 》queryset 对象列表 models.A.objects.all().order_by(‘-id‘) #获取所有对象 —— 》queryset 对象列表 并排序 models.A.object.filter(id=1,name=‘xx‘) 获取满足条件的所有对象 —— 》queryset 对 相关属性 普通类:对象.id 对象.name 外键: 对象.id 对象.name 对象.a----->相关联的a对象 对象.a_id --->相关联的a对象的id 多对多: 对象.id 对象.name 对象.bs ------>获得管理对象 对象.bs.all----> 获取全部内容 2.增 普通: new-obj=models.A.objects.create(name=‘新的出版社名字‘) 外键: b_obj=models.B.objects.create(title=‘新的书名‘,a=a_obj) 多对多: c_obj = models.C.objects.create(name=‘作者名字‘) 3.删 删除一条 models.A.objects.get(id=1,name=‘xx‘).delete() 删除全部 models.A.objects.all().delete() 4.改 普通: a_obj.name="新名字" a_obj.save() 外键; b_obj.name="新名字" b_obj.a=a_obj b_obj.a_id=a_obj.id b_obj.save() 多对多 c_obj.name=‘新名字‘ c_obj.save() c_obj.bs.set([1,2,3]) 三.模板相关 render(request,‘模板名字‘,{‘new_name‘:‘新华出版社‘,‘err_meg‘:‘出版社已存在‘}) {{ 变量名 }} {{ new_name}} 新华出版社 标签(与逻辑相关) python 外键用法 多对多关系 ORM操作 模板相关 标签:sel 获取 format ade tle obj self query -- 原文地址:https://www.cnblogs.com/J-7-H-2-F-7/p/9621586.html
title = models.CharField(max_length=32, unique=True)
b_obj=models.B.objects.create(title=‘新的书名‘,a_id=a_obj.id)
c_obj.bs.set([1,3,5])
{% for a in a_list %}
{{ forloop.counter }}
{{ a.id }}
{{a.name }}
{% endfor%}
文章标题:python 外键用法 多对多关系 ORM操作 模板相关
文章链接:http://soscw.com/essay/101353.html