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

Django中基表的创建、外键字段属性简介、脏数据概念、子序列化

orm中外键字段属性详解 在建表之前我们对外键字段属性进行了解: 1)related_name在外键中设置外键反向查询的字段名:正向找字段名,反向找related_name,related_name...的默认是表名小写 + _set,这就是为什么在Django中跨表反向查询时我们使用表名小写 + _set去查另一张表的数据。...2)on_delete在外建中必须设置,表示级联关系,在Django1.x下系统默认提供(为models.CASCADE),Django2.x下必须手动明确: CASCADE:默认,级联 例子:作者被删...子序列化 Django中的子序列化的功能是:通过跨表查询数据然后对跨表查到的数据序列化。...子序列化的使用方法及注意事项: 1)只能在序列化中使用 2)字段名必须是外键(正向反向都可以)字段,相对于自定义序列化外键字段,自定义序列化字段不能参与反序列化,而子序列化必须为外键名,子序列化字段不写入数据

4.3K30

DRF框架学习(二)

2.明确RestAPI接口实现时的主要工作 2.1序列化&反序列化程序中的数据结构类型转换为其他格式的数据,这个过程叫做序列化的过程 例:将模型类对象转换为字典或者json数据的过程,就叫做序列化的过程...把其他格式的数据转换为程序数据结构类型,这个过程叫做反序列化的过程。 例:将前端传递的数据保存到模型对象中的过程,叫做反序列化过程。...__' model 指明该序列化器处理的数据字段从模型类BookInfo参考生成 fields 指明该序列化器包含模型类中的哪些字段,’all‘指明包含所有字段 3.2.2....default 我们在使用序列化和反序列化时使用的默认 allow_null 表明该字段是否允许传入None,默认False help_text、label_text 可以理解为注释,在web直观显示的时候有一个显示信息...(label='图书') 4.6反序列化功能(重点掌握) 4.6.1数据校验 is_valid()调用此方法进行数据校验,它会先去你定义的序列化器类中的字段中,看是否满足你的条件,然后再进行系统提供的校验

4.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

Django rest_framework实现增删改查接口

整体单改群改接口 局部修改数据 视图给序列化传参 Django rest_framework实现增删改查接口 本文使用Django的rest_framework框架的ModelSerializer模块和...# 将kwargs中额外的k-v数据添加到data中 data.update(**kwargs) super()....:必须有子序列化类配合,不能反向查询 第二种:配置depth:自动深度查询的是关联表的所有字段数据量太多 第三种:插拔式@property:名字不能与外键名同名(最常用方式) 下面介绍插拔式: 如果书要连表查询出版社...# 2)没有提供的字段采用被修改对象原来的 # 设置context的,目的:在序列化完成自定义校验(局部与全局钩子)时,可能需要视图类中的变量,如请求对象request...# 2)没有提供的字段采用被修改对象原来的 # 设置context的,目的:在序列化完成自定义校验(局部与全局钩子)时,可能需要视图类中的变量,如请求对象request

2.2K20

Django之ORM对数据库操作

(跨表) 语法:关联字段__字段 示例: print(models.Book.objects.values_list("publisher__name")) 反向操作 对象查找 语法:obj.表名_set...方法 create() 创建一个新的对象,保存对象,并将它添加到关联对象集之中,返回新创建的对象。...models.Author.objects.first().book_set.create(title="番茄物语", publish_date=datetime.date.today()) add() 把指定的model对象添加到关联对象集中...键的名称是聚合的标识符,是计算出来的聚合。键的名称是按照字段和聚合函数的名称自动生成出来的。...如果我们要对两个字段做比较,那该怎么做呢? Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段

1.3K110

Django ORM那些相关操作

(跨表) 语法: 关联字段_字段 示例: print(models.Book.objects.values_list("publisher__name")) 反向操作 对象查找 语法: obj.表名_set...方法 create() 创建一个新的对象,保存对象,并将它添加到关联对象集之中,返回新创建的对象。...models.Author.objects.first().book_set.create(title="番茄物语", publish_date=datetime.date.today()) add() 把指定的model对象添加到关联对象集中...键的名称是聚合的标识符,是计算出来的聚合。键的名称是按照字段和聚合函数的名称自动生成出来的。...如果我们要对两个字段做比较,那该怎么做呢?   Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段

2.3K60

Django——model基础

这些参数在文档中有详细定义,这里我们只简单介绍一些最常用的: (1)null 如果为True,Django 将用NULL 来在数据库中存储空。 默认是 False....(4)unique 如果该设置为 True, 这个数据字段在整张表中必须是唯一的 (5)choices 由二元组组成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。...把指定的模型对象添加到关联对象集中。 例如: ?...Django会明白新的 Entry对象blog 应该添加到b中。 remove(obj1[, obj2, ...]) 从关联对象集中移除执行的模型对象: ?...如果我们要对两个字段做比较,那该怎么做呢? Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段。 ?

1.1K100

Django REST Framework-如何使用过滤器

Django REST Framework (DRF) 是一个开源的 Web 框架,它建立在 Django 上,可以帮助你轻松地构建 RESTful API。...使用内置的过滤器DRF 内置了很多过滤器,其中一些是常用的过滤器:ExactFilter:使用精确匹配过滤,可以用于过滤整数、布尔、字符串等类型的字段;CharFilter:使用模糊匹配过滤,可以用于过滤字符串类型的字段...现在,我们来看一个完整的例子,它展示了如何使用 DRF 的过滤器来获取过滤后的数据。...= {'price': ['exact', 'lte', 'gte']}在这个例子中,我们创建了一个名为 BookViewSet 的视图集合,它使用了 Book 模型和 BookSerializer 序列化器...例如,下面的代码展示了如何将 PriceFilterBackend 添加到我们的视图集合中:class BookViewSet(viewsets.ModelViewSet): queryset =

1.9K40

运维开发中数据模型的流程化管理

当然这对model的管理本身没有变化,基于model的处理有以下的集中设计思路,一种是原生的API方式,比如Django API等。...还有一类是作为RESTful API使用比较轻量的方式,基于序列化方案的设计,这类方案相对来说比较精巧,代码量小,没有Django API的功能全面,主要是做模型映射,通常会和API结合使用,不适合一些定制化数据格式的场景...还有一类是raw sql,这是API和序列化之外的下下策。如果确认难以通过上述两种方案满足,使用原生SQL也是支持的,不过不推荐首选。...最硬伤的,如果添加字段,修改字段名等,raw sql方式就很难以扩展。 当然这些都是底层偏技术的事情,如果再上升一层就会发现,问题的复杂度远比这些要高很多。 为此我画了一个图。 ?...而对于数据的管理不只有正向的联动,如果反向的联动,也是有的,比如刚刚是model1的变更联动model2的变更,反之model2的变更也会联动model1的变更,随着业务场景的组合,会发现这个部分会越来越复杂

66820

第 9 篇:实现分类、标签、归档日期接口

这些数据的展示都需要开发对应的接口,以便前端调用获取数据。...之前序列化字段都是在序列化器(Serializer)里面使用的,因为通常来说接口需要序列化一个对象的多个字段。...而这个接口中只需要序列化一个时间字段(类型为 Python 标准库中的 datetime.date),所以没必要单独定义一个序列化器了,直接拿 django-rest-framework 提供的用于序列化时间类型的...用法也很简单,实例化序列化字段,调用其 to_representation 方法,将需要序列化传入即可(其实序列化器在序列对象的多个字段时,内部也是分别调用对应序列化字段的 to_representation...接着我们在接口返回一个 Response, Response 将序列化后的结果包装返回(保存在 data 属性中),django-rest-framework 会进一步帮我们把这个 Response 中包含的数据解析为合适的格式

2.6K30

Python利用Django 构建Rest Api: 快速入门教程

PS: API(应用程序编程接口)为开发人员提供了与应用程序数据库交互的接口。 2. Django项目配置 首先在本地为我们的代码创建一个新的目录。...定义数据模型、执行数据同步 定义数据模型,此处我们创建四个字段: title、content、created_at和updated_at。...配置管理后台Admin 我们希望在Django的后台中管理我们的数据,因此,让我们将Post添加到下面。...接下来,我们创建一个序列化器类并在其中创建一个元类(Meta)。fields字段控制数据数据的类型。...在本例中,我们将暴露所有字段,包括id,这是Django的主键,由Django自动添加到所有数据库记录。 4、接下来,我们需要创建view。

5.2K20

Django Rest Framework(版本、解析器、序列化数据验证)

表示服务器可以解析的数据格式的种类 django中的发送请求 #如果是这样的格式发送的数据,在POST里面有 Content-Type: application/url-encoding........__getattribute__(attr) 三、序列化 序列化用于对用户请求数据进行验证和数据进行序列化(为了解决queryset序列化问题)。 那什么是序列化呢?...,将数据库查询字段序列化为字典 data_list = models.UserInfo.objects.all() ser = UserSerializer(instance...,将数据库查询字段序列化为字典 data_list = models.UserInfo.objects.all() ser = ModelUserSerializer(instance...,将数据库查询字段序列化为字典 data_list = models.UserInfo.objects.all() ser = ModelUserSerializer(instance

2.1K20

第 7 篇:文章详情的 API 接口

lookup_field 属性指定的资源筛选字段(默认为 pk)。django-rest-framework 以该字段从 get_queryset 返回的资源列表中筛选出单个资源对象。...lookup_field 字段将从请求的 URL 中捕获,所以你看到文章接口的 url 模式为 /posts/:pk/,假设将 lookup_field 指定为 title,则 url 模式为 /posts...原因是视图集中指定的文章序列化器为 PostListSerializer,这个序列化器被用于序列化文章列表。因为展示文章列表数据时,有些字段用不上,所以出于性能考虑,只序列化了部分字段。...,只是在 fields 中指定了更多需要序列化字段。...同时注意,为了序列化文章的标签 tags,我们新增了一个 TagSerializer,由于文章可能有多个标签,因为 tags 是一个列表,要序列化一个列表资源,需要将序列化器参数 many 的指定为

99130

django restframework serializer 增加自定义字段操作

在使用django restframework serializer 序列化django中定义的model时,有时候我们需要额外在serializer中增加一些model中没有的字段。...方法一修改数据库,利用model 这里就不多解释,主要来说第二种,不修改django的model,直接使用SerializerMethodField(method_name=None)字段。...当不指定其method_name时,默认为get_field_name 如果使用ModelSerializer并指定字段时,要包含此时定义的字段 补充知识:django restframework Serializer...它通过调用它所连接的序列化类的方法来获得它的。它可用于将任何类型的数据添加到对象的序列化表示中。...(因为表中含有多对多字段),如何验证所有字段,并保存完整的数据到各表中。

3.4K40

django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段的使用

创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其分别对应着datetime()、date()、time()三中对象。...需要注意的是,设置该参数为true时,并不简单地意味着字段的默认为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin...与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。 ?...此时,如果在admin的fields或fieldset中强行加入该日期时间字段,那么程序会报错,admin无法打开;如果在admin中修改对象时,想要看到日期和时间,可以将日期时间字段添加到admin类的...实际场景中,往往既希望在对象的创建时间默认被设置为当前,又希望能在日后修改它。怎么实现这种需求呢? django中所有的model字段都拥有一个default参数,用来给字段设置默认

6.8K80

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

还有一些适用于所有字段的可选的通用参数,这些参数在 参考(reference) 中有详细定义,这里我们只简单介绍一些最常用的: null 如果为 True, Django数据库中会将空(empty...如果一个字段的 blank=True,Django 的管理后台在做数据验证时,会允许该字段是空。如果字段的 blank=False,该字段就是必填的。...然而如果将它做为其他 model 的基类,那么该类的字段就会被添加到子类中。抽象基类和子类如果含有同名字段,就会导致错误(Django 将抛出异常)。...因为 Django 会将基类字段添加到每个子类当中,而每个子类的字段属性都完全相同 (这里面就包括 related_name)。注:这样每个子类的关联字段都会指向同一个字段。...重写父类的字段会导致很多麻烦,比如:初始化实例(指定在 Model.init 中被实例化的字段) 和序列化。而普通的 Python 类继承机制并不能处理好这些特性。

3.1K30

重点内容回顾-DRF

MySQL数据库中修改表中数据: update 表名 set 字段名=要改的 [where 查询指定数据的条件] update tb_users set email_active=0 where id...5.4序列化器Serializer 5.4.1功能 进行数据序列化和反序列化。 5.4.2序列化器定义 继承自 serializers.Serializer(重点掌握),里面的字段需要自己定义。...class 序列化器类名(serializers.Serializer): # 字段名 = serializer.字段类型(选项参数) 如果我们想要使用序列化器对应的是Django的模型类,那么可以继承自...,validators=[about_django]) b.在序列化器中定义一个方法 validate_,来对 字段进行验证。...过滤:需要先安装django-filter并进行注册设置,再在视图中通过 filter_fields设置过滤字段

2.4K20

Django REST Framework-序列化器的使用(一)

Django REST Framework(DRF)中,序列化器是用于将Django模型转换为序列化格式(例如JSON)和将序列化格式转换为Django模型的组件。...序列化器用于将Django模型转换为序列化格式(例如JSON)。它们通常用于将数据从服务器发送到客户端。序列化器的另一个用途是验证输入数据并确保数据的有效性。...当我们从客户端接收数据时,我们必须确保数据符合我们定义的规范。使用序列化器,我们可以轻松地验证输入数据并确保其有效性。...在序列化器中,我们可以指定每个字段的自定义序列化方法。这使我们可以根据需要修改字段序列化方式。...我们使用SerializerMethodField将get_timestamp()方法添加到序列化器中,并在Meta类中指定我们要包含的所有字段

56830
领券