• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 举例讲解Django中数据模型访问外键值的方法

举例讲解Django中数据模型访问外键值的方法

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了django 模型,python.django,django教程,django中文手册,django官方网站等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

先设置一个关于书本(book)的数据模型:

from django.db import models

class Publisher(models.Model):
  name = models.CharField(max_length=30)
  address = models.CharField(max_length=50)
  city = models.CharField(max_length=60)
  state_province = models.CharField(max_length=30)
  country = models.CharField(max_length=50)
  website = models.URLField()

  def __unicode__(self):
    return self.name

class Author(models.Model):
  first_name = models.CharField(max_length=30)
  last_name = models.CharField(max_length=40)
  email = models.EmailField()

  def __unicode__(self):
    return u'%s %s' % (self.first_name, self.last_name)

class Book(models.Model):
  title = models.CharField(max_length=100)
  authors = models.ManyToManyField(Author)
  publisher = models.ForeignKey(Publisher)
  publication_date = models.DateField()

  def __unicode__(self):
    return self.title

</div>

 访问外键(Foreign Key)值

当你获取一个ForeignKey 字段时,你会得到相关的数据模型对象。 例如:

>>> b = Book.objects.get(id=50)
>>> b.publisher
<Publisher: Apress Publishing>
>>> b.publisher.website
u'http://www.apress.com/'

</div>

对于用`` ForeignKey`` 来定义的关系来说,在关系的另一端也能反向的追溯回来,只不过由于不对称性的关系而稍有不同。 通过一个`` publisher`` 对象,直接获取 books ,用 publisher.book_set.all() ,如下:

>>> p = Publisher.objects.get(name='Apress Publishing')
>>> p.book_set.all()
[<Book: The Django Book>, <Book: Dive Into Python>, ...]

</div>

实际上,book_set 只是一个 QuerySet,所以它可以像QuerySet一样,能实现数据过滤和分切,例如:

>>> p = Publisher.objects.get(name='Apress Publishing')
>>> p.book_set.filter(name__icontains='django')
[<Book: The Django Book>, <Book: Pro Django>]

</div>

属性名称book_set是由模型名称的小写(如book)加_set组成的。

</div>

您可能想查找下面的文章:

  • 在Django的模型和公用函数中使用惰性翻译对象
  • 在Django的模型中执行原始SQL查询的方法
  • 在Django的模型中添加自定义方法的示例
  • Django的数据模型访问多对多键值的方法
  • 举例讲解Django中数据模型访问外键值的方法
  • django模型中的字段和model名显示为中文小技巧分享

相关文章

  • 在Django的session中使用User对象的方法
  • Python读写Excel文件的实例
  • 在IIS服务器上以CGI方式运行Python脚本的教程
  • 详解MySQL数据类型int(M)中M的含义
  • python监控网站运行异常并发送邮件的方法
  • python爬虫常用的模块分析
  • Python如何实现守护进程的方法示例
  • python缩进区别分析
  • Python 中urls.py:URL dispatcher(路由配置文件)详解
  • 浅析python 内置字符串处理函数的使用方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python实现优先级队列结构的方法详解
    • python模拟登录百度贴吧(百度贴吧登录)实例
    • 使用PyInstaller将Python程序文件转换为可执行程序文件
    • 在Python的Django框架中生成CSV文件的方法
    • python list排序的两种方法及实例讲解
    • 在Python中调用ggplot的三种方法
    • Python实现各种排序算法的代码示例总结
    • Python线程详解
    • Python单链表的简单实现方法
    • python3图片转换二进制存入mysql

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有