博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django_models_一对一关系
阅读量:6812 次
发布时间:2019-06-26

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

用来定义一对一关系。 和使用其它Field类型一样:在模型当中把它做为一个类属性包含进来。

当某个对象想扩展自另一个对象时,最常用的方式就是在这个对象的主键上添加一对一关系。

要一个位置参数:与模型关联的类。

例如,如果你正在建立一个“places”的数据库,那么你将建立一个非常标准的地址、电话号码等 在数据库中。 接下来,如果你想在place数据库的基础上建立一个restaurant数据库,而不想将已有的字段复制到Restaurant模型,那你可以在 Restaurant 添加一个 字段,这个字段指向Place(因为Restaurant 本身就是一个Place;事实上,在处理这个问题的时候,你应该使用一个典型的 ,它隐含一个一对一关系)。

与一样,可以定义,并可以。

提示:

  在中有一套完整的例子。

字段也接受一个可选的参数。

在以前的版本中, 字段会自动变成模型 的主键。 不过现在已经不这么做了(不过要是你愿意的话,你仍可以传递 参数来创建主键字段)。 所以一个 模型 中可以有多个 字段。

跨文件的模型

访问其他应用的模型是非常容易的。 在文件顶部你定义模型的地方,导入相关的模型来实现它。 然后,无论在哪里需要的话,都可以引用它。 例如:from django.db import modelsfrom geography.models import ZipCodeclass Restaurant(models.Model):    # ...    zip_code = models.ForeignKey(        ZipCode,        on_delete=models.SET_NULL,        blank=True,        null=True,    )

字段名称限制

Django 对字段的命名只有两个限制:

  1. 字段的名称不能是Python 保留的关键字,因为这将导致一个Python 语法错误。 例如:

    class Example(models.Model): pass = models.IntegerField() # 'pass' is a reserved word!
  2. 由于Django 查询语法的工作方式,字段名称中连续的下划线不能超过一个。 例如:

    class Example(models.Model): foo__bar = models.IntegerField() # 'foo__bar' has two underscores!

这些限制有变通的方法,因为没有要求字段名称必须与数据库的列名匹配。 参见选项。

SQL 的保留字例如selectwhere 和join,可以用作模型的字段名,因为Django 会对底层的SQL 查询语句中的数据库表名和列名进行转义。 它根据你的数据库引擎使用不同的引用语法。

 

转载于:https://www.cnblogs.com/Xingtxx/p/11010052.html

你可能感兴趣的文章
(原創) HDL只是代表一個model (IC Design) (Verilog)
查看>>
System.Net.Mail 例子 [收藏]
查看>>
WPF - 模板查看工具:Show Me The Template及如何查看第三方主题
查看>>
C语言 return没有返回值.
查看>>
超级详细Tcpdump 的用法
查看>>
JAVA的String 类
查看>>
Android LayoutInflater学习
查看>>
C# GIZP解码
查看>>
Java并发编程:并发容器之ConcurrentHashMap(转载)
查看>>
Java ConcurrentModificationException异常原因和解决方法
查看>>
traceroute
查看>>
使用FileUpload控件上传文件时对文件大小的限制
查看>>
C#线程系列讲座(1):BeginInvoke和EndInvoke方法
查看>>
马的日字走法和knight是同意类型的。
查看>>
Web.config自定义节点configSections
查看>>
codility上的问题 (23)Chi 2012
查看>>
sort uniq妙用
查看>>
用2263份证件照图片样本测试how-old.net的人脸识别
查看>>
递归控件以加入JS方法
查看>>
PHP面试题(English)
查看>>