python 外键用法 多对多关系 ORM操作 模板相关
Posted 吉喆嚞吉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 外键用法 多对多关系 ORM操作 模板相关相关的知识,希望对你有一定的参考价值。
一.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)
title = models.CharField(max_length=32, unique=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 "<B object: {}>".format(self.name)
3.设计多对多关系表
class C(models.Model):
name=models.CharField(max_length=32,unique=True)
bs=models.ManyToManyField(‘B‘)
def __repr__(self)
return "<C object: {}>".format(self.name)
__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)
b_obj=models.B.objects.create(title=‘新的书名‘,a_id=a_obj.id)
多对多:
c_obj = models.C.objects.create(name=‘作者名字‘)
c_obj.bs.set([1,3,5])
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}} 新华出版社
标签(与逻辑相关)
{% for a in a_list %}
{{ forloop.counter }}
{{ a.id }}
{{a.name }}
{% endfor%}
以上是关于python 外键用法 多对多关系 ORM操作 模板相关的主要内容,如果未能解决你的问题,请参考以下文章
django数据库操作-增删改查-多对多关系以及一对多(外键)关系
转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系