一.app/models中写类(设计表结构)app
1.普通类oop
class A(models.Model):设计
id=modles.AutoField(primary_key=True)orm
name=models.CharField(max_length=32,unique=True)对象
2.设置外键排序
class B(models.Model): get
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=32, unique=True)it
a=models.ForeignKey(to=A,on_delete=models.CASCADE) B必须写在A后面form
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%}