精华内容
下载资源
问答
  • Django模型字段关系

    万次阅读 2018-03-18 08:20:23
    Django模型字段关系 转自:http://wrongwaycn.github.com/django11/ref/models/fields/ Django model 字段类型: 1 AutoField 一个 IntegerField, 添加记录时它会自动增长. 你通常不需要直接 使用这个字段;...

    Django模型和字段的关系

    转自:http://wrongwaycn.github.com/django11/ref/models/fields/

    Django model 字段类型:

    • 1 AutoField
      一个 IntegerField, 添加记录时它会自动增长. 你通常不需要直接
      使用这个字段;如果你不指定主键的话,系统会自动添加一个主键字段到你的 model.

    • 2 BooleanField
      A true/false field. admin 用 checkbox 来表示此类字段.

    • 3 CharField
      字符串字段, 用于较短的字符串.

      如果要保存大量文本, 使用 TextField.

      admin 用一个 <input type="text"> 来表示此类字段 (单行输入).

      CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数.

    • 4 CommaSeparatedIntegerField
      用于存放逗号分隔的整数值. 类似 CharField, 必须要有 maxlength 参数.

    • 5 DateField
      一个日期字段. 共有下列额外的可选参数:

      auto_now : 当对象被保存时,自动将该字段的值设置为当前时间.通常用于表示 “last-modified” 时间戳.

      auto_now_add : 当对象首次被创建时,自动将该字段的值设置为当前时间.通常用于表示对象创建时间.

      admin : 用一个文本框 input type="text"> 来表示该字段数据(附带一个 JavaScript 日历和一个”Today”快键.

    • 6 DateTimeField
      一个日期时间字段. 类似 DateField 支持同样的附加选项.

      admin 用两上文本框 <input type="text"> 表示该字段顺序(附带JavaScript shortcuts).

    • 7 EmailField
      一个带有检查 Email 合法性的 CharField,不接受 maxlength 参数.

    • 8 FileField
      一个文件上传字段.

      要求一个必须有的参数: upload_to, 一个用于保存上载文件的本地文件系统路径. 这个路径必须包含 strftime formatting, 该格式将被上载文件的 date/time 替换(so that uploaded files don’t fill up the given directory).

      admin 用一个<input type="file">部件表示该字段保存的数据(一个文件上传部件) .

      在一个 model 中使用 FileField 或 ImageField 需要以下步骤:

      1. 在你的 settings 文件中, 定义一个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传文件. (出于性能考虑,这些文件并不保存到数据库.) 定义 MEDIA_URL 作为该目录的公共 URL. 要确保该目录对 WEB 服务器用户帐号是可写的.

      2. 在你的 model 中添加 FileField 或 ImageField, 并确保定义了 upload_to 选项,以告诉 Django 使用 MEDIA_ROOT 的哪个子目录保存上传文件.

      3. 你的数据库中要保存的只是文件的路径(相对于 MEDIA_ROOT). 出于习惯你一定很想使用 Django 提供的 get__url 函数.举例来说,如果你的 ImageField 叫作 mug_shot, 你就可以在模板中以 {{ object.get_mug_shot_url }} 这样的方式得到图像的绝对路径.

    • 9 FilePathField
      可选项目为某个特定目录下的文件名. 支持三个特殊的参数, 其中第一个是必须提供的:

      1. path : 必选参数. 一个目录的绝对文件系统路径. FilePathField 据此得到可选项目. Example: “/home/images”.

      2. match : 可选参数. 一个正则表达式, 作为一个字符串, FilePathField 将使用它过滤文件名. 注意这个正则表达式只会应用到 base filename 而不是路径全名. Example: “foo.*.txt^”, 将匹配文件 foo23.txt 却不匹配 bar.txt 或 foo23.gif.

      3. recursive : 可选参数.要么 True 要么 False. 默认值是 False. 是否包括 path 下面的全部子目录.

    • 这三个参数可以同时使用.

      我已经告诉过你 match 仅应用于 base filename, 而不是路径全名. 那么,这个例子:

      FilePathField(path=”/home/images”, match=”foo.*”, recursive=True)
      …会匹配 /home/images/foo.gif 而不匹配 /home/images/foo/bar.gif

    • 10 FloatField
      一个浮点数. 必须 提供两个 参数:
      max_digits : 总位数(不包括小数点和符号)
      decimal_places : 小数位数

      举例来说, 要保存最大值为 999 (小数点后保存2位),你要这样定义字段:

      models.FloatField(…, max_digits=5, decimal_places=2)
      要保存最大值一百万(小数点后保存10位)的话,你要这样定义:

      models.FloatField(…, max_digits=19, decimal_places=10)
      admin 用一个文本框(<input type="text">)表示该字段保存的数据.

    • 11 ImageField
      类似 FileField, 不过要校验上传对象是否是一个合法图片.它有两个可选参数:height_field 和 width_field,如果提供这两个参数,则图片将按提供的高度和宽度规格保存.

      该字段要求 Python Imaging Library.

    • 12 IntegerField
      用于保存一个整数.

      admin 用一个<input type="text">表示该字段保存的数据(一个单行编辑框)

    • 13 IPAddressField
      一个字符串形式的 IP 地址, (i.e. “24.124.1.30”).

      admin 用一个<input type="text">表示该字段保存的数据(一个单行编辑框)

    • 14 NullBooleanField
      类似 BooleanField, 不过允许 NULL 作为其中一个选项. 推荐使用这个字段而不要用 BooleanField 加 null=True 选项.

      admin 用一个选择框 <select> (三个可选择的值: “Unknown”, “Yes” 和 “No” ) 来表示这种字段数据.

    • 15 PhoneNumberField

      一个带有合法美国风格电话号码校验的 CharField(格式:XXX-XXX-XXXX).

    • 16 PositiveIntegerField
      类似 IntegerField, 但取值范围为非负整数(这个字段应该是允许0值的….所以字段名字取得不太好,无符号整数就对了嘛).

    • 17 PositiveSmallIntegerField
      类似 PositiveIntegerField, 取值范围较小(数据库相关)

    • 18 SlugFiel
      “Slug” 是一个报纸术语. slug 是某个东西的小小标记(短签), 只包含字母,数字,下划线和连字符.它们通常用于URLs.

      若你使用 Django 开发版本,你可以指定 maxlength. 若 maxlength 未指定, Django 会使用默认长度: 50. 在以前的 Django 版本,没有任何办法改变 50 这个长度.

      这暗示了 db_index=True.

      它接受一个额外的参数: prepopulate_from, which is a list of fields from which to auto-populate the slug, via JavaScript, in the object’s admin form:

      models.SlugField(prepopulate_from=(“pre_name”, “name”))
      prepopulate_from 不接受 DateTimeFields.

      admin 用一个<input type="text">表示 SlugField 字段数据(一个单行编辑框)

    • 19 SmallIntegerField
      类似 IntegerField, 不过只允许某个取值范围内的整数.(依赖数据库)

    • 20 TextField
      一个容量很大的文本字段.

      admin 用一个 <textarea> (文本区域)表示该字段数据.(一个多行编辑框).

    • 21 TimeField
      A time. Accepts the same auto-population options as DateField 和 DateTimeField.

      admin 用一个 <input type="text"> 文本框表示该字段保存的数据(附加一些JavaScript shortcuts).

    • 22 URLField
      用于保存 URL. 若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在(即URL是否被有效装入且没有返回404响应).

      admin 用一个 <input type="text"> 文本框表示该字段保存的数据(一个单行编辑框)

    • 23 USStateField
      一个两字母的美国州名缩写.

      admin 用一个 <input type="text"> 文本框表示该字段保存的数据(一个单行编辑框)

    • 24 XMLField
      一个校验值是否为合法XML的 TextField,必须提供参数: schema_path, 它是一个用来校验文本的 RelaxNG schema 的文件系统路径.

    django的数据库关系

    Django 提供了定义最常见的三种数据库关系:多对一、多对多和一对一。

    • 1 多对一 关系
      定义多对一关系,使用 ForeignKey。就像其他字段一样,在模型中以类属性的形式包含它即可。
      ForeignKey 需要一个参数:所属的模型名称。
      比如,一个制造商生产了多辆汽车。
        class Manufacturer(models.Model):
            # ...
    
        class Car(models.Model):
            manufacturer = models.ForeignKey(Manufacturer)
            # ...
    • 2 多对多 关系
      定义多对多关系,使用 ManyToManyField。
      比如,一个 Pizza 有多种配料 Topping,而每种配料也可以用在多个 Pizza 上。
        class Topping(models.Model):
            # ...
    
        class Pizza(models.Model):
            # ...
            toppings = models.ManyToManyField(Topping)
    • 3 一对一关系
      定义一对一关系,使用 ForeignKey。

      在一对一关系中,必须提供一个位置参数: 被关联的 model 类。
      要创建递归关联时–与对象自己做多对一关系,那就使用 models.ForeignKey(‘self’) 。

      如果你要与某个尚未定义的 model 建立关联 ,就使用 model 的名称,而不是使用 model 对象本身:

        class Car(models.Model):
            manufacturer = models.ForeignKey('Manufacturer')
            # ...
    
        class Manufacturer(models.Model):
            # ...
    展开全文
  • 关系数据库里,关系模式模型)是型,关系是值,关系模式...关系实质上是一个二维表,表中每一条记录(行)在关系模式中被称为元组,每个字段(列)被称为属性。 前者是描述结构,后者是具体数据。严格上不能划等号。
    关系数据库里,关系模式(模型)是型,关系是值,关系模式是对关系的描述。关系实质上是一个二维表,表中每一条记录(行)在关系模式中被称为元组,每个字段(列)被称为属性。
    
    前者是描述结构,后者是具体数据。严格上不能划等号。
    展开全文
  • odoo关系字段赋值

    千次阅读 2018-04-27 10:00:56
    M2O: 比较简单,数据库中存的是关系模型记录id, 是一个整型数值,写法如下: sale_order_line.write({'order_id': order.id})O2M/M2M:复杂一些,主要操作方法如下:(0, _, values): 使用values...

    这里主要是讲模型write/create 方法字典参数中关系字段(M2O, O2M,M2M字段)的值的写法。

    M2O: 比较简单,数据库中存的是关系模型的记录id, 是一个整型数值,写法如下: sale_order_line.write({'order_id': order.id})

    O2M/M2M:复杂一些,主要操作方法如下:

    (0, _, values):

                  使用values字段指定的值创建新的记录。

                  如创建一条订单时,其中订单行的指定, create({'order_line':[(0,0,{订单行值})]})

    (1, id, values):

                  用values指定的值更新id这条记录的值,方法不能用于create。

    (2, id, _):

                 从关系集合中删除id这条记录,并从数据库中删除记录,方法不能用于create。

    (3, id, _):

                  仅从关系集合中删除id这条记录。数据库不删除,仍存在。M2M关系的解除。

                 不适用与O2M字段,不适用与create。

    (4, id, _):

                  将id这条记录添加到关系集合中,M2M关系的建立。不适用与O2M字段

    (5, _, _):

                  情况关系集合中的所有记录。等价与没个记录做(3,id,_)操作。

                  不适用与O2M字段,不适用与create。

                  

    (6, _, ids):

                    用ids指定的记录替换现有的关系记录。等价于先用5删除关系,再用4将每个id记录添加进来

    注:上述中 '_'  符号可忽略,一般写做``0`` or ``False``。


    展开全文
  • Many-to-one关联 publisher_id = fields.Many2one(comodel_name='res.partner',domain='',context={},ondelete='',auto_join='',delegate='',string='...many-to-one模型字段在数据表中创建一个字段,并带有指向...

     

    Many-to-one关联

    publisher_id = fields.Many2one(comodel_name= 'res.partner', domain='',context={},ondelete='',auto_join='',delegate='',string='Publisher')

        

    many-to-one模型字段在数据表中创建一个字段,并带有指向关联表的外键,其中为关联记录的数据库 ID。以下是many-to-one字段可用的关键字参数:

    • ondelete定义关联记录删除时执行的操作:context是一个数据字典,可在浏览关联时为网页客户端传递信息,比如设置默认值。
      • set null (默认值): 关联字段删除时会置为空值
      • restricted:抛出错误阻止删除
      • cascade:在关联记录删除时同时删除当前记录
    • domain是一个域表达式:使用一个元组列表过滤记录来作为关联记录选项。
    • auto_join=True允许ORM在使用关联进行搜索时使用SQL连接。使用时会跳过访问安全规则,用户可以访问安全规则不允许其访问的关联记录,但这样 SQL 的查询会更有效率且更快。
    • delegate=True 创建一个关联记录的代理继承。使用时必须设置required=True和ondelete=’cascade’

     

    One-to-many反向关联

     published_book_ids = fields.One2many(

      comodel_name= 'library.book', # related model

           inverse_name= 'publisher_id', # fields for "this" on related model
          domain='',
          context={},
         auto_join='',
         limit=0,
            string='Published Books')
     

    Many-to-many关联

        author_ids = fields.Many2many(

        comodel_name='res.partner', # 关联模型(必填)
        relation='library_book_res_partner_rel', # 关联表名
        column1='a_id', # 本记录关联表字段
        column2='p_id', # 关联记录关联表字段
        string='Authors') # string标签文本
      
        

    class Many2many(_RelationalMulti):
    """ Many2many field; the value of such a field is the recordset.

    :param comodel_name: name of the target model (string)

    The attribute ``comodel_name`` is mandatory except in the case of related
    fields or field extensions.

    :param relation: optional name of the table that stores the relation in
    the database (string)

    :param column1: optional name of the column referring to "these" records
    in the table ``relation`` (string)

    :param column2: optional name of the column referring to "those" records
    in the table ``relation`` (string)

    The attributes ``relation``, ``column1`` and ``column2`` are optional. If not
    given, names are automatically generated from model names, provided
    ``model_name`` and ``comodel_name`` are different!

    :param domain: an optional domain to set on candidate values on the
    client side (domain or string)

    :param context: an optional context to use on the client side when
    handling that field (dictionary)

    :param limit: optional limit to use upon read (integer)

    """

    在创建抽象模型时,many-to-many中不要使用column1和column2属性。在 ORM 设计中对抽象模型有一个限制,如果指定关联表列名,就无法再被正常继承。
     

    转载于:https://www.cnblogs.com/fly-kaka/p/11018779.html

    展开全文
  • 来自模型记录可能来自另一模型记录相关。例如,一个销售订单记录和一个包含客户数据的客户记录相关;同时也和销售订单线记录相关。 练习 创建会话模型 对于模块Open Academy,我们考虑一个会话模型:会话是...
  • django模型 常用的字段

    2018-06-11 22:58:44
    ORM简介MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库。· ORM是“对象-关系-映射”的简称,主要任务是...
  • odoo关系字段domain写法

    千次阅读 2017-02-18 15:05:00
    多对一关系: Many2one ondelete 属性 no atction:相互不影响cascade:主键被删除,外键对应的记录也删除。直接删除外键的记录,不影响主键。restrict: 如果存在外键,主键删除的时候报错。set null:主键被删除,...
  • odoo 中的不同字段,丰富了其所在模型的信息。某个模型下,出现了何种类型的字段,表示当前模型可以存储什么类型的信息。我们可以理解为模型是由字段配置出来的,也就是说字段装饰了模型。 同样的,对于字段来说,...
  • ODOO13 (附) 模型中的字段及常用属性

    千次阅读 2020-06-30 13:27:21
    odoo 中的不同字段,丰富了其所在模型的信息。某个模型下,出现了何种类型的字段,表示当前模型可以存储什么类型的信息。我们可以理解为模型是由字段配置出来的,也就是说字段装饰了模型。 同样的,对于字段来说,...
  • 关系模型

    2015-10-07 17:09:39
    关系模型:用二维表格表示实体集,用关键码进行数据导航的数据模型称为关系模型。   在关系模型字段-----属性,字段值-----属性值 记录类型-----关系模式 记录-----元组(tuple) 元组的集合-----关系...
  • 概念模型与关系模型和关系规范化

    万次阅读 多人点赞 2017-05-20 16:18:34
    》概念模型  概念模型用于信息世界的建模,是实现现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面具有较强的语义...
  • Django数据库字段类型(Field types) AutoField class AutoField(**options) 它是一个根据 ID 自增长的 IntegerField 字段。通常,你不必直接使用该字段。如果你没在别的字段上指定主键,Django 就
  • 下边字段类型是在django中使用ORM创建数据模型时,常用的字段类型总结: 1、AutoField 一个自增的IntegerField,一般不直接使用,因为django会自动为每一张表添加自增primary_key 2、BigIntegerField 64位整数...
  • 常用的SQLAlchemy字段类型 类型名 python中类型 说明 Integer int 普通整数,一般是32位 SmallInteger int 取值范围小的整数,一般是16位 BigInteger int或long 不限制精度的整数 Float float 浮点数 ...
  • 2.3关系模型

    2018-03-05 18:20:15
    一、在关系模型中,字段称为属性,字段值为属性值,记录类型称为关系模式记录称为元组,元组的集合称为关系或实例,关系中属性的个数称为“元数”,元组的个数称为“基数”。 二、关键码由一个或多个属性组成 1、...
  • Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在表中,表用来给应用的实体建模,表的列数是固定的,行数是可变的。它使用结构化的查询语言。关系型数据库的列定义了表中表示的实体的数据...
  • ODOO13 开发教程四 模型中的字段

    千次阅读 2019-12-29 12:50:28
    在这篇文章中,我将整理出odoo中不同类型的字段及其它们的使用。在开始之前,我必须再给大家讲讲蛋挞王子的故事。 在上节中,小程序猿为蛋挞王子做了一个图书管理的模块,并进行了安装测试。但很明显,模块太简单了...
  • 关系模式的分解范式

    万次阅读 多人点赞 2017-05-08 16:40:26
    1. 为什么要研究数据库关系模式的分解? 答:因为现有的模式可能会存在一些数据增删改的弊端,比如说:数据冗余太大,更新异常,插入异常,删除异常。因此为了完善数据库的增删改查的功能,需要寻找一种等价的关系...
  • 数据库实体联系模型与关系模型

    千次阅读 2020-03-02 19:11:33
    数据库设计是指根据用户的需求,在某一具体...这就需要规划课程、学生、老师、学习资料等数据构成以及相互之间的关系。因此,规划数据构成及数据间关系,并应用某一具体的数据库管理系统如MySQL构建数据库的过程就是...
  • 对象与记录关系 属性与字段关系 模型类的定义 在 应用下的 models.py 文件中定义模型类 class Student(models.Model): pass 模型中常见的属性类型 CharField varchar EmailField varchar FileField...
  • 描述:有个积分表,用于记录用户的一些积分情况,其中有两个字段,score用于记录用户当前积分,totalscore用于记录用户的历史总积分(只增不减),因为代码逻辑问题,导致现网出现了score竟然比历史总积分还要高,想...
  • Odoo12入门(3)-模型关系

    2019-12-05 14:30:31
    模型与模型之间一定会存在某种联系,比如说一张销售订单销售员和客户有关系, 销售单和销售单行(产品)记录也有相互的联系。 关系字段 关系字段有三种: Many2one(other_model, ondelete='set null') 数据库外键...
  • Oracle关系模型

    2019-03-31 16:19:15
    关系模型的本质其实就是若干个存储数据的二维表。 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段字段定义了数据类型...
  • 数据库中的关系模型

    2020-05-26 15:45:04
    文章目录1 数据库中的关系模型 1 数据库中的关系模型 关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。 核心概念: 表的每一行称为记录(Record),...
  • 字段查询 def process_query(request): # 非过滤器方法 # get只能返回一条记录 # 如果记录不存在:DoesNotExist # 如果多于一条记录: MultipleObjectsReturned # user = User.objects.get(uid__gt=1) # ...
  • oneThink中模型、分类、文章相互关系;oneThink中创建模型、分类以及文章;解决OneThink中模型字段参数为函数时无返回值的问题;OT中模型属性怎样和文章中输入单元对应...
  • 主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个...
  • 数据库关系模型 关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。 1、表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 2、表的每一列称为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 198,429
精华内容 79,371
关键字:

关系模型的记录与字段