首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django 1.8 官方文档翻译: 2-3-1 模型实例参考

我们可以更新前面的例子,只引发pub_date 字段上的异常: class Article(models.Model): ......pk 属性 Model.pk 无论你是自己定义还是让Django 为你提供一个主键字段, 每个模型都将具有一个属性叫做pk。它的行为类似模型的一个普通属性,但实际上是模型主键字段属性的别名。...Django 对INSERT 和UPDATE SQL 语句的使用进行抽象。...当你unpickle 它时,它将包含pickle 时模型的实例,而不是数据库中的当前数据。 你不可以在不同版本之间共享pickles 模型的Pickles 只对于产生它们的Django 版本有效。...因为pickle 兼容性的错误很难诊断例如一个悄无声息损坏的对象,当你unpickle 模型使用的Django 版本与pickle 时的不同将引发一个RuntimeWarning。

1.9K10

Django 模型继承 BaseModel

这在抽象基类中一般会引发问题,因为基类中的字段都被子类继承,且保持了同样的值(包括 related_name 和 related_query_name)。...通用性规则: 当你克隆一个已存在模型或数据表时,并且不想要所以的原数据表列,配置 Meta.managed=False。这个选项在模型化未受 Django 控制的数据库视图和表格时很有用。...在 Django 中,模型字段通常不允许这样做。如果一个非抽象模型基类有一个名为 author 的字段,你就不能在继承自该基类的任何类中,创建另一个名为 author 的模型字段或属性。...注解 某些字段在模型内定义了额外的属性,例如 ForeignKey 定义了一个额外的属性 _id 附加在字段名上,类似的还有外键上的 related_name 和 related_query_name。...若你在祖先模型中重写了任何模型字段,Django 会抛出一个 FieldError。

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    django 1.8 官方文档翻译:2-1-1 模型语法

    自增主键字段 默认情况下,Django 会给每个模型添加下面这个字段: id = models.AutoField(primary_key=True) 这是一个自增主键字段。...如果你想指定一个自定义主键字段,只要在某个字段上指定 primary_key=True 即可。如果 Django 看到你显式地设置了 Field.primary_key,就不会自动添加 id 列。...用法和其他字段类型一样:在模型里面做为类属性包含进来。 当某个对象想扩展自另一个对象时,最常用的方式就是在这个对象的主键上添加一对一关系。 OneToOneField要一个位置参数:与模型关联的类。...但在抽象基类上这样做就会引发一个很严重的问题。因为 Django 会将基类字段添加到每个子类当中,而每个子类的字段属性值都完全相同 (这里面就包括related_name)。...Changed in Django 1.7. Django 1.7之前,继承多个含有id主键字段的模型不会抛出异常,但是会导致数据丢失。

    5K20

    37.Django1.11.6文档

    如果你进行测试,测试中涉及非托管 model (managed=False),那么在测试之前,你应该要确保在 测试启动时 已经创建了正确的数据表。...例如,如果将此列表设置为['gis_enabled'],则模型将仅在启用GIS的数据库上同步。 在使用多个数据库后端进行测试时,跳过某些模型也很有用。 避免与ORM无关的模型之间的关系。...如果模型上的相应字段有选择集,则提供给表单的选项必须是这些选择的有效子集,否则,在保存模型本身之前验证模型本身时,表单提交将失败并显示ValidationError 。...Django在定义关系(在这种情况下,Group)的模型上显示多对多字段的管理窗口小部件。 ...如果模型是抽象的,则引发ImproperlyConfigured。 如果模型已经注册则引发django.contrib.admin.sites.AlreadyRegistered。

    24.4K80

    Django—模型

    表bookinfo结构如图:   默认值并不在数据库层面生效,而是在django创建对象时生效。 ?...}}/">删除 {%endfor%}   7.运行项目测试 上去 2.模型类 定义属性 Django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型...渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列...定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下: 属性=models.字段类型(选项) 字段类型 使用时需要引入django.db.models包,字段类型如下: AutoField...当没有为模型类定义管理器时,Django会为每一个模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects。

    6.1K21

    django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)

    通常来说,每个模型都对应数据库中的一张表。 基础: 每个模型都是django.db.models.Model类的子类。 模型的每个属性都表示数据库中的一个字段。...如果你想指定一个自定义主键字段,只要在某个字段上指定 primary_key=True 即可。如果 Django 看到你显式地设置了 Field.primary_key,就不会自动添加 id 列。...用法和其他 Field 字段类型一样:在 model 里面做为类属性包含进来。 当某个对象想扩展自另一个对象时,最常用的方式就是在这个对象的主键上添加一对一关系。...但在抽象基类上这样做就会引发一个很严重的问题。因为 Django 会将基类字段添加到每个子类当中,而每个子类的字段属性值都完全相同 (这里面就包括 related_name)。...注:这样每个子类的关联字段都会指向同一个字段。 当你在(且仅在)抽象基类中使用 related_name 时,如果想绕过这个问题,就要在属性值中包含 ‘%(class)s’ 字符串。

    3.1K30

    django 1.8 官方文档翻译: 2-1-3 元选项 (初稿)

    如果你的模型定义在默认的 models.py 之外(比如,你现在用的模型在 myapp.models 子模块当中),你必须告诉 Django 该模型属于哪个应用: app_label = 'myapp...由于一个字段的反转名称应该是唯一的,当你给你的模型设计子类时,要格外小心。...这包括: 如果你不声明它的话,会向你的模型中添加一个自增主键。为了避免给后面的代码读者带来混乱,强烈推荐你在使用未被管理的模型时,指定数据表中所有的列。...对于带有managed=False的模型的测试,你要确保在测试启动时建立正确的表。...它在Django后台中被使用,在数据库层上约束数据(比如,在 CREATE TABLE 语句中包含 UNIQUE语句)。

    82430

    关于“Python”的核心知识点整理大全59

    中添加了字段owner,它建 立到模型User的外键关系。...在3处,我们遍历用户列表,并打印每位用户的用户名和ID。Django询问要将既有主题关联 到哪个用户时,我们将指定其中的一个ID值。 3. 迁移数据库 知道用户ID后,就可以迁移数据库了。...在2处的输出中,Django指出我们试图给既有 模型Topic添加一个必不可少(不可为空)的字段,而该字段没有默认值。...在这里,我们导入了异常Http404 (见1),并在用户请求它不能查看的主题时引发这个异常。收到主题请求后,我们在渲染网页前 检查该主题是否属于当前登录的用户。...Django的意思是说,创建新主题时,你必须指定其owner字段的值。 由于我们可以通过request对象获悉当前用户,因此存在一个修复这种问题的简单方案。

    14410

    Django 模型查询2.3

    :比较运算符,F对象,Q对象 查询集 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库..."模型类.DoesNotExist"异常 如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常 count():返回当前查询的总条数 first():返回第一个对象 last...IndexError异常,[0:1].get()引发DoesNotExist异常 查询集的缓存 每个查询集都包含一个缓存来最小化对数据库的访问 在新建的查询集中,缓存为空,首次对查询集求值时,会发生数据库查询...= list.count() F对象 可以使用模型的字段A与字段B进行比较,如果A写在了等号的左边,则B出现在等号的右边,需要通过F对象构造 list.filter(bread__gte=F('bcommet...')) django支持对F()对象使用算数运算 list.filter(bread__gte=F('bcommet') * 2) F()对象中还可以写作“模型类__列名”进行关联查询 list.filter

    2.4K20

    Django模型model

    定义模型类 在模型中定义属性,会生成数据库表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django...定义模型属性 定义属性时,需要字段类型 字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models中 使用方式 导入from django.db...模型类中字段选项 通过字段选项,可以实现对字段的约束 在字段对象时通过关键字参数指定 null:如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False blank:如果为True...,模型的对象不存在时会引发此异常,结合try/except使用 实例方法 str (self):重写object方法,此方法在将对象转换成字符串时会被调用 delete():将模型对象从数据表中删除 11...()、order_by()、values() 返回单个值的方法 get():返回单个满足条件的对象 如果未找到会引发"模型类.DoesNotExist"异常 如果多条被返回,会引发"模型类.MultipleObjectsReturned

    15310

    【云+社区年度正文】Django从入门到精通No.2----模型

    django从入门到精通No.2----模型 一、前言 学过orm系统自然之道模型的重要性,很多web站点都需要与数据库交互,这个时候模型的设计就显得尤为重要,一个好的模型会使得项目方便管理并且易于维护...二、模型的定义 模型可以定义储存数据的字段和值,比如我们在进行表单提交的时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库中。简单来说,模型是与数据库有关的操作集合。...models.Model类,然后我们会使用字段来对数据进行记录,django中有很多字段,如下: 字段类 默认小组件 说明 AutoField N/A 根据 ID 自动递增的 IntegerField,...必填参数primary_key=True,则成为数据库的主键,无该字段时,django自动创建,一个model不能有两个该字段。...# 在Admin或ModelForm中显示关联数据时,提供的条件,字典类型 symmetrical=None # 仅用于多对多自关联时,用于指定内部是否创建反向操作的字段,

    2.1K00

    Django 2.1.7 模型管理器 models.Manager 以及 元选项

    上一篇Django 2.1.7 模型的关联讲述了关于Django模型一对多、多对多、自关联等模型关系。...在查询数据的时候,对于某种固定的查询,例如视图之类的查询,通用类型的查询每次都需要写一遍,有没有一个地方可以将这类通用的查询抽象出来,进行模型的业务管理呢? 这时候就要看看模型的管理器了。...默认情况下,Django 为每个Django模型类添加一个模型管理类Manager的对象为objects。...2.在管理器类中定义创建对象的方法 对模型类对应的数据表进行操作时,推荐将这些操作数据表的方法封装起来,放到模型管理器类中。...# 全国区域信息 class AREA(models.Model): # 使用 db_column='ID' 设置字段名 ID = models.AutoField(primary_key

    57120

    Django 2.1.7 模型管理器 models.Manager 以及 元选项

    上一篇Django 2.1.7 模型的关联 讲述了关于Django模型一对多、多对多、自关联等模型关系。...在查询数据的时候,对于某种固定的查询,例如视图之类的查询,通用类型的查询每次都需要写一遍,有没有一个地方可以将这类通用的查询抽象出来,进行模型的业务管理呢? 这时候就要看看模型的管理器了。...默认情况下,Django 为每个Django模型类添加一个模型管理类Manager的对象为objects。...2.在管理器类中定义创建对象的方法 对模型类对应的数据表进行操作时,推荐将这些操作数据表的方法封装起来,放到模型管理器类中。...# 全国区域信息 class AREA(models.Model): # 使用 db_column='ID' 设置字段名 ID = models.AutoField(primary_key

    98040

    完整的 Django 零基础教程|初学者指南 - 第 4 部分 转自:维托尔·弗雷塔斯

    第一次保存后,Django会自动设置id: board.id 1 您可以将其余字段作为 Python 属性访问: board.name 'Django' board.description 'This...基本上,它是来自数据库的对象列表。我们可以看到我们有两个对象,但是我们只能读取Board object 。那是因为我们还没有 __str__在Board 模型中定义方法。...如果我们尝试获取不存在的对象,例如带有 的板 id=3,则会引发异常: board = Board.objects.get(id=3) boards.models.DoesNotExist: Board...我们可以对 get任何模型字段使用该方法,但最好使用可以唯一标识对象的字段。否则,查询可能会返回多个对象,从而导致异常。...models操作总结 下面是我们在本节中学习的方法和操作的摘要,使用Board 模型作为参考。

    80220
    领券