博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 外键用法 多对多关系 ORM操作 模板相关
阅读量:6658 次
发布时间:2019-06-25

本文共 1973 字,大约阅读时间需要 6 分钟。

一.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%}

转载于:https://www.cnblogs.com/J-7-H-2-F-7/p/9621586.html

你可能感兴趣的文章
Java虚拟机学习 - JDK可视化监控工具
查看>>
EL表达式详解(转)
查看>>
完全隐藏Master Page左边导航条只有管理员才可以看见
查看>>
Apache2 Web 服务器
查看>>
关于右键属性与du -sh显示的文件大小不一致的解决
查看>>
16秋进度条10
查看>>
WCF开发优秀博客园推荐
查看>>
Java自动装箱和拆箱
查看>>
Myeclipse10和Eclipse安装git插件 (亲测可用)
查看>>
Elementary Methods in Number Theory Exercise 1.4.9
查看>>
陶哲轩实分析引理17.1.16
查看>>
陶哲轩实分析 定义7.11(有限级数) 注
查看>>
数组中最大的子数组之和
查看>>
ASP.NET MVC and jqGrid 学习笔记 4-排序
查看>>
Java基础 - String的Intern方法详解(转)
查看>>
web前端页面解决中文传参乱码问题
查看>>
JavaScript多线程之HTML5 Web Worker
查看>>
[Vue CLI 3] public 目录没用吗
查看>>
PHP的生成图片或文字水印的类
查看>>
java中Memcached的使用(包括与Spring整合)
查看>>