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

Django多层嵌套ManyToMany字段ORM操作详解

在用django写项目时,遇到了许多场景,关于ORM操作获取数据,但是不好描述出来,百度搜索关键词都不知道该怎么搜,导致一个人鼓捣了好久。...property def items(self): return self.chapter.filter(problem___id__isnull=False).count() 补充知识:django...设置了ordering后,使用distinct()和annotate()问题记录 model类如下,我在class Meta中设置了ordering = [‘-date_create’],即模型对象返回记录结果集是按照这个字段排序...`date_create` DESC 可以看到,所得到结果并不像我们预期一样,之后把执行sql输出出来可以看到在group by时候是对host_name和date_create进行分组,原因就是因为我们在...以上这篇Django多层嵌套ManyToMany字段ORM操作详解就是小编分享给大家全部内容了,希望能给大家一个参考。

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

django 模型字段设置默认代码

22 path = models.CharField(max_length=50) 补充知识:django 设置默认到SQL 环境:django 1.9.7 背景介绍 django migrate...生成表结构时,默认是不处理default(即字段default 是在django 框架层面,没有到数据库层面)。...当然,如果只用django 来做项目是没有任何问题,但是如果同一个库被不同框架操作,那么怎么来管理这些表呢是个问题。...项目前端系统使用tornado,后端管理系统使用django, 鉴于这种情况,所以就用django来生成所有的表,但是在实际中,不通过django 插入数据全都报错,一查看,全是默认没有填写情况。...同文件 create_model 方法在调用 column_sql,方法时,没有传递参数,skip_default 方法始终返回False 知道了这些后,我们只需要自定义 include_default 就好

3.6K40

使用信号监控 Django 模型对象字段变化

Django 信号 (Signals) 功能类似于 WordPress 动作 (action),用于为项目全局增加事件广播 (dispatch) 与接收 (receive) 机制。...监控特定字段 (field) 变化 从上一段代码可以知道,通过接收模型 post_save 信号,可以得知发生了保存模型对象操作,并且还可以区分出是创建了模型对象还是更新了模型对象。...然而,模型信号并没有提供针对特定字段变化广播功能,虽然该信号提供了 update_fields 参数,但是并不能证明在该参数中字段字段一定发生了变化,所以我们要采用一个结合 post_init...__original_name, instance.name)) 简单说就是在该模型广播 post_init 信号时候,在模型对象中缓存当前字段;在模型广播 post_save (或 pre_save...)时候,比较该模型对象的当前字段与缓存字段,如果不相同则认为该字段发生了变化。

1.8K20

DRF中多对多ManytoMany字段更新和添加

背景:drf序列化器给模型输出带来了便利但是对于多对多字段网上查询内容却是很少(也有可能是本人不会搜答案)经过我多个日夜摸索,终于实现了我需求,现将自己心得记录一下说下我需求:定义一个订单模型里面的订单...orderId 是自动生成UUID订单区域是外键,下单人也是外键,菜品orderMenu是一个多对多字段(其实通过我查到方法说都是外键字段就可以实现但是个人觉得菜品和订单应该是多对多会比较好理解...)就这样给自己挖了坑因为想要在添加订单同时也要添加对应菜品数量于是自定义了中间表并且添加了数量字段(噩梦开始~~~)首先是定义模型类models.py# models.pyimport django.utils.timezone...as timezonefrom django.contrib.auth.models import Userfrom django.db import modelsfrom serverorders.models...设置为orderBusinessArea_id一样 request.data['orderBusinessArea'] = request.data.get('orderBusinessArea_id

63920

Django ORM 查询表中某列字段方法

下面看下Django ORM 查询表中某列字段,详情如下: 场景: 有一个表中某一列,你需要获取到这一列所有,你怎么操作?...QuerySet,内容是键值对构成,键为表列名,为对应每个。...QuerySet,但是内容是元祖形式查询列。...查看高阶用法,告诉你怎么获取一个list,如: [‘测试feed’, ‘今天’, ‘第三个日程测试’, ‘第四个日程测试’, ‘第五个测试日程’] 到此这篇关于Django ORM 查询表中某列字段文章就介绍到这了...,更多相关django orm 字段内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

11.7K10

利用django model save方法对未更改字段依然进行了保存

obj = Obj.objects.get(id=1) print obj.name #此时name假定为'abc' def handler(oid): obj = Obj.objects.get...save()保存时,虽然没有更改其它字段,但依然会将内存中,再次存入数据库,子函数和其它进程更改会被覆盖。...下面将针对本文标题来做示例: django.db.models.signals.pre_save & django.db.models.signals.post_save Sent before or...在模型保存操作执行前或者执行后发送信号 Connecting to signals sent by specific senders (连接到特定发送器发送信号) Some signals get...和save运行逻辑一样,pre信号先触发,post后触发 以上这篇利用django model save方法对未更改字段依然进行了保存就是小编分享给大家全部内容了,希望能给大家一个参考。

1.7K10

DjangoORM字段类型-2

模型类-字段选项 字段选项:指定创建额外信息 允许出现多个字段选项,多个选项之间使用,隔开 primary key 如果设置为True,表示该列为主键,如果指定一个字段为主键,则此数据库不会创建...Id字段 blank 设置为True时候,字段可以为空。...设置为False时候字段是必须填写 null 如果设置为True则表示该列允许为空....默认情况下为False,如果不为空的话需要设置default来设置默认 default 设置所在列默认,如果字段选项null=False的话建议添加此选项 db_index 如果设置为True表示为该列增加索引...unique 如果设置为True表示该字段在数据库中必须是唯一(不能重复出现) db_column 指定列名称,如果不指定的话则采用属性名作为列名 verbose_name 设置此字段在admin

62730

DjangoAutoField字段使用

补充知识:Django中models下常用Field以及字段参数 一、常见FieldType数据库字段类型 1、AutoField:自增Field域,自动增加一个数据库字段类型,例如id字段就可以使用该数据类型...(上传文件保存路径)/storage=None(存储组件,默认django.core.files.storage.FileSystemStorage) 12、FilePathField:存储文件路径数据...(上传文件保存路径)/storage=None(存储组件,默认django.core.files.storage.FileSystemStorage)/width_field=None(上传图片宽度保存数据库字段名...、default:为该字段设置默认 四、关系字段 1、to:设置要关联表 2、to_field:设置要关联字段 3、related_name:反向操作时,使用字段名,用于代替原反向查询时”...null(前提FK字段需要设置为可空) on_delete=models.SET_DEFAULT:删除关联数据,与之关联设置为默认(前提FK字段需要设置默认) on_delete=models.SET

6.3K20

Django中FilePathField字段使用

有三个参数, 其中第一个是 必需: FilePathField.path 必填。这个FilePathField 应该得到其选择目录绝对文件系统路径。...FilePathField.allow_folders 是可选.输入 True 或者 False.默认为 False.声明是否包含指定位置文件夹。...FilePathField实例被创建在您数据库为varchar列默认最大长度为 100 个字符。作为与其他字段,您可以更改使用max_length最大长度。...所以在Django中,我这样定义主要字段: title = models.CharField(max_length = 120) img = models.ImageField(upload_to...media/screenshots/test.jpg 判断图片大小是否需要做缩略图,如果不需要,直接复制img.path到thumb,否则,生成一张缩略图(以test-thumb.jpg命名)保存

3.6K50

Django使用list对单个或者多个字段求values实例

开发环境:Ubuntu16.04+Django 1.11.9+Python2.7 使用list对values进行求值: 单个字段输出结果: price_info=list(Book.objects.filter...多个字段输出结果: 也使用list可以将符合条件多个字段同时提取出来 entry_list = list(Selleraccount.objects.filter(status=1).values(...: 这里需要注意是,values中字段信息需要使用单引号进行包裹 如果只有一个符合条件,就是一个列表里面有一个字典.如果多个符合条件则是多个字典放在列表中 补充知识:Django获取多个复选框...,并插入对应表底下 1、实现功能类似于,多个复选框,后面还有一个备注,之后要把复选框和备注一一对应插入数据库表中,主要提供一个思路,代码不全。...使用list对单个或者多个字段求values实例就是小编分享给大家全部内容了,希望能给大家一个参考。

1.4K20

Django学习笔记之Queryset详解

注意:这里只是查询Entry表,返回a每条记录只包含Entry表字段,不管Entrymodel中是否有onetoone、onetomany、manytomany字段,都不会关联查询。...OneToOne关系也是这样关联查询,可以看到,Django对OneToOne、OneToMany、ManyToMany关联查询及其反向关联查询提供了相同方式,真是牛逼啊。...,字段只能是聚合函数,因为使用annotate时,会用group by,所以只能用聚合函数。...只返回主表(即Author表)所有字段,即使在查询时关联了其它表,关联表字段也不会返回,只有当我们通过Author instance用关联表时,Django才会再次查询数据库获取值。...前面提到了对于a = Author.objects.filter(**kwargs)这类语句,对应SQL只返回主表,即Author所有字段,并不会返回关联表字段,只有当我们使用关联表时才会再查数据库返回

2.7K30

django 模型中计算字段实例

verbose_name='姓') given_name = models.CharField(max_length=20, verbose_name='名') def name(self): # 计算字段要显示在修改页面中只能定义在只读字段中...name.short_description = '全名' # 用于显示时名字 , 没有这个,字段标题将显示'name' readonly_fields = ('name',) admin.site.register...(Person, PersonAdmin) 补充知识:django如何在 search_fields 中包含外键字段 在search_fields中加入一个外键名字是不能查询,要写成(外键名__外键中字段名...)形式. search_fields = ('attributename','goodsclass__cn') # goodsclass__cn 就可以搜索外键名字中有搜索词条目了, # 比如搜索手机分辨率...,而不是电脑分辨率,就可以搜索'手机 分辨率' 以上这篇django 模型中计算字段实例就是小编分享给大家全部内容了,希望能给大家一个参考。

4.4K20

django filter过滤器实现显示某个类型指定字段不同方式

这个必须是一个有小括号构成元组,每个元组前一个字段将存入数据库,后一个字段是显示给用户看。...整数 BinaryField 二进制字段 存储内存二进制数据,以 python bytes 对象来访问 BooleanField 布尔字段 如果许可空布尔输入,换用 NullBooleadField...CharField可变长字符串字段 max_length 有最大输入选项为必须设置选项 DateField日期字段 auto_now:每一次保存对象时,Django 都会自动将该字段设置为当前时间...要注意使用是当前日期,而并非默认,所以 不能通过重写默认办法来改变保存时间。...auto_now_add:在第一次创建对象时,Django 自动将该字段设置为当前时间,一般用来表示对象创建时间。

2.9K60

django写接口(优化篇)

作者:Kuky_xs 博客:https://www.jianshu.com/u/9fcd71535294 前言 系列文章: 《django入门:环境及项目搭建》 《django入门:数据模型》 《django...入门:视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 在《用django写接口(入门篇)》提到这篇会讲 views 代码优化,在这之前,我们先适当了解下...,接着,我觉得有必要把自己在 Android 端做接口测试代码和运行结果贴出来,不然你们又会觉得我坑你们了......这边我为了偷懒(嗯对,就是偷懒),我又写了一个只有单个字段 model ?...在结束文章最后,记录自己写时候遇到一个坑,当更新 ManyToMany 字段时候,我们需要重新写 post 方法,直接传 id 是不能更新,直接传 id 是不能更新,直接传 id 是不能更新...# 假设我们 post 有一个 ManyToMany 字段 tags class PostDetailView(APIView): # 更新时候,需要约定好 ManyToMany

2.1K20
领券