django foreignkey外键使用的例子 相当于left join


Posted in Python onAugust 06, 2019

django外键使用 一对一

因为django中处于安全和方便将数据库中的表封装成模型,所以很多sql原生的功能无法使用, 比如 left join,但是我们可以使用外键(foreignkey)来满足表表直接的关系。

设置模型

# 在models.py 中添加
# Person 模型有两个外键, School和Province
# 
class Province(models.Model):
  name = models.CharField('省份', max_length = 10)
  post = models.CharField('邮编', max_length = 10)
  def __str__ (self):#在Python2中用__unicode__替换__str__
    return self.name

# class School_Type(models.Model):
#   school_type = models.CharField('学校类别')

class School(models.Model):
  id = models.IntegerField('学校编号', primary_key=True)
  name = models.CharField('学校名称', max_length=200)
  address = models.CharField('学校地址', max_length=200)

  def __str__ (self):#在Python2中用__unicode__替换__str__
    return self.name




class Person(models.Model):
  name = models.CharField('姓名', max_length=50)
  age = models.IntegerField('年龄')
  address = models.CharField('地址', max_length=100)
  email = models.EmailField('电子邮件')
  school = models.ForeignKey(School, on_delete=models.CASCADE)
  province = models.ForeignKey(Province, on_delete = models.CASCADE)

设置 ModelForm

因为Form的字段跟model的字段相同,所以我们直接使用 ModelForm, 使用ModelForm时外键会以 ChoiceField 字段来显示, 显示为 str()返回的字段

# 因为Form的字段跟model的字段相同,所以我们直接使用 ModelForm

class PersonForm(ModelForm):
  class Meta:
    model = Person
    fields = '__all__'

保存

views.py 中的view,可以直接使用 form.save() 来保存form

def person(request):
  if request.POST:
    form = PersonForm(request.POST)

    if form.is_valid():
      p = form.save()
      return HttpResponse(request, 'success')
    else:
      return HttpResponse(request, 'fail')
  else:
    form = PersonForm()
    person_list = Person.objects.all()
    # school_list = person_list.School_set.all()
    return render(request, 'person.html', locals())

模版 person.html

可以在模版中使用 person.外键字段.外键表属性 来显示数据,比如 person.school.province.post

{% extends 'base.html' %}

{% block content %}

  <form action="." method="POST">
  {% csrf_token %}
  {{ form }}
  <input type="submit" value='submit' />

  </form>

{#  #}
  {% for person in person_list %}

  <p>name:{{ person.name }}; age: {{ person.age }}; school:{{ person.school}}
     {{ person.province.post }}
  </p>
{% endfor %}
{#  {{ school_list }}#}

{% endblock %}

以上这篇django foreignkey外键使用的例子 相当于left join就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python import自定义模块方法
Feb 12 Python
Python使用xlrd模块操作Excel数据导入的方法
May 26 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
Python标准库之itertools库的使用方法
Sep 07 Python
Python3 模块、包调用&amp;路径详解
Oct 25 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
Django logging配置及使用详解
Jul 23 Python
在Django中实现添加user到group并查看
Nov 18 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
Python 用__new__方法实现单例的操作
Dec 11 Python
Python Django简单实现session登录注销过程详解
Aug 06 #Python
Django框架中序列化和反序列化的例子
Aug 06 #Python
python异常触发及自定义异常类解析
Aug 06 #Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 #Python
Django中reverse反转并且传递参数的方法
Aug 06 #Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 #Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 #Python
You might like
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
js下拉菜单语言选项简单实现
2013/09/23 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
Django框架下在视图中使用模版的方法
2015/07/16 Python
详解Python进程间通信之命名管道
2017/08/28 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
Python with标签使用方法解析
2020/01/17 Python
C语言开发工程师测试题
2016/12/20 面试题
介绍一下Ruby的特点
2013/01/20 面试题
爱情检讨书大全
2014/01/21 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
学用政策心得体会
2014/09/10 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
公证书格式
2015/01/23 职场文书
党员带头倡议书
2015/04/29 职场文书
论文评审意见
2015/06/05 职场文书
爱国主义影片观后感
2015/06/18 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫