ORM
Moke丶青
无
展开
-
[django] 连表查询selected_related与prefetch_related
selected_related只做一次链表查询,会将链表数据全部取出prefetch_related做两次查询,第二次为链表查询如果链表很多,prefetch_related效率高于selected_related,同时prefetch_related支持m2m,而selected_related只支持fk和one2one...原创 2019-11-20 19:09:35 · 188 阅读 · 0 评论 -
[django] ORM字段及参数
ORM利用pymysql第三方工具连接数据库默认: SQLliteMySQL: mysql -> MYSQLDB(修改django默认连接方式)一、 创建表基本结构from django.db import models class userinfo(models.Model): name = models.CharField(max_length=30)...原创 2019-10-05 10:08:55 · 126 阅读 · 0 评论 -
[django] ORM choices字段get_字段_display()显示值
class msg(models.Model): choice = ( (1, '技术部'), (2, '行政'), (3, '人事'), (4, "财务"), ) group = models.IntegerField(choices=choice)get_group_display()...原创 2019-11-12 15:37:38 · 2272 阅读 · 0 评论 -
[django] ORM ] ModelForm ChoiceField
一对一:forms.ModelChoiceField多对多:forms.MultiModelChoiceField原创 2019-11-12 15:32:51 · 727 阅读 · 0 评论 -
[django] xadmin ORM多对多remote_field获取对象
在xadmin组件中,当需要获取外键对应的对象时,我们可以通过remote_field得到QuerySet对象from django.db.models.fields.related import ManyToManyField,ForeignKeyfilter_field_obj = self.model._meta.get_field(filter_field) # app01.Boo...原创 2019-11-11 15:25:19 · 499 阅读 · 0 评论 -
[django] _meta元对象简单应用
更多get_field通过get_field(字段名)获取当前字段对象获取到字段对象后可以去获取字段的属性(对于我们所需的字段中就含有choice属性)obj = models.CustumerInfo._meta.get_field("title")val = obj.verbose_name属性app_label:表示它属于哪个应用 models.CustumerInf...原创 2019-11-06 16:50:59 · 151 阅读 · 0 评论 -
[django] ORM分组和聚合
聚合from django.db.models import Avg, Sum, Max, Min, Countmodels.Book.objects.all().aggregate(Avg("price"))>>> {'price__avg': 13.233333}# 为聚合值指定一个名称models.Book.objects.aggregate(average_...原创 2019-10-30 12:08:19 · 1016 阅读 · 0 评论 -
[django] Foreign Key外键参数
ForeignKey(ForeignObject)blog = models.ForeignKey( to="Blog", to_field="nid", on_delete=models.DO_NOTHING) # 外键关联博客,一个博客站点可以有多个分类字段to, # 要进行关联的表名to_field = None, # 要关联的表中的字段名称on_delete ...原创 2019-10-22 11:17:53 · 4772 阅读 · 0 评论 -
[Django] ORM 利用sql extra日期格式化date_format
Django框架中models的DateTimeField类型在MySQL数据库中插入的时间格式是“2019-02-16 10:25:04.186496”。使用普通的ORM查询语句,输出的DateTimeField字段是“datetime.datetime(2019, 2, 16, 10, 8, 44, 642364)”。如果你使用模版渲染的话,可以在前端页面使用过滤器格式化DateTimeF...原创 2019-10-24 10:32:23 · 2744 阅读 · 1 评论 -
[django] orm正向反向查询
正向和反向查询正向 ----> 关联字段在当前表中,从当前表向外查叫正向反向 —> 关联字段不在当前表中,当当前表向外查叫反向一对一 OneToOneField# 一个文章详情表一对一关联文章表,相当于Foreignkey 加uniqueclass Article(models.Model): nid = models.AutoField(primary_key=True)...原创 2019-10-29 11:51:55 · 1793 阅读 · 1 评论 -
[django] ORM简单增删改查
操作表基本操作# 增## models.Tb1.objects.create(c1='xx', c2='oo') 增加一条数据,可以接受字典类型数据 **kwargs# obj = models.Tb1(c1='xx', c2='oo')# obj.save()# 查## models.Tb1.objects.get(id=123) # 获取单条数据,不...原创 2019-10-05 10:17:53 · 267 阅读 · 0 评论 -
[django] ORM进阶extra,F,Q,执行原生sql
原文章链接:wupeiqi其他操作extra,F,Q,执行原生sql# extra # extra(self, select=None, where=None, params=None, tables=None, order_by=None, select_params=None)# Entry.objects.extra(select={'new_id': "select ...原创 2019-10-08 16:48:22 · 325 阅读 · 0 评论 -
[django] ORM自关联
表内自关联是指表内数据相关联的对象和表是相同字段,这样我们就直接用表内关联将外键关联设置成自身表的字段。同样表内关联也分一对多字段和多对多字段例如:对于微博评论,每条评论都可能有子评论,但每条评的字段内容应该都是相同的,并且每条评论都只有一个父评论,这就满足了,一对多的情形。父评论为关联字段,可以对应多个子评论,这就是一对多的自关联。自关联主要靠数据库中自关联表的第一列from 和 第二列to...原创 2019-10-09 11:02:39 · 460 阅读 · 0 评论 -
[django] ORM QuerySet方法大全
models.book.objects.方法:def all(self) # 获取所有的数据对象def filter(self, *args, **kwargs) # 条件查询 # 条件可以是:参数,字典,Qdef exclude(self, *args, **kwargs) # 条件查询 # 条件可以是:参数,字典,Qdef select_...原创 2019-10-08 17:07:32 · 314 阅读 · 0 评论 -
[django] ORM终端打印SQL语句
即为你的Django项目配置上一个名为django.db.backends的logger实例即可查看翻译后的SQL语句。LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', ...原创 2019-10-08 17:05:07 · 895 阅读 · 0 评论 -
[django] ORM Python脚本中调用Django环境
导入后,即可使用模块:import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", "BMS.settings") import django django.setup() from app01 import models books = mo...原创 2019-10-08 17:01:38 · 167 阅读 · 0 评论 -
[django] ORM 元信息Meta
元信息class UserInfo(models.Model): nid = models.AutoField(primary_key=True) username = models.CharField(max_length=32) class Meta: # 数据库中生成的表名称 默认 app名称 + 下划线 + 类名 db_table...原创 2019-10-08 16:55:54 · 310 阅读 · 0 评论 -
[django] ORM Admin
扩展1.触发Model中的验证和错误提示有两种方式: a. Django Admin中的错误信息会优先根据Admiin内部的ModelForm错误信息提示,如果都成功,才来检查Model的字段并显示指定错误信息 b. 调用Model对象的 clean_fields 方法,如: # models.py class UserInfo(models....原创 2019-10-08 16:55:01 · 123 阅读 · 0 评论 -
[django] ORM连表操作
原文章链接:wupeiqi连表class UserProfile(models.Model): user_info = models.OneToOneField('UserInfo') username = models.CharField(max_length=64) password = models.CharField(max_length=64) ...原创 2019-10-08 16:50:39 · 166 阅读 · 0 评论 -
[django] ORM双下划线汇总
原文章链接:wupeiqi进阶(双下划线)# 获取个数 # models.Tb1.objects.filter(name='seven').count() # 大于,小于 # models.Tb1.objects.filter(id__gt=1) # 获取id大于1的值 # models.Tb1.objects.filter(id...原创 2019-10-08 16:49:01 · 879 阅读 · 0 评论 -
[django] 批量插入数据bulk_create
每创建一个对象都保存一次数据,会影响性能,如果先批量创建对象,最后保存一次到数据库,就使用bulk_create方法from task.models import Man# 单条插入 d1 = {"name":"pork","password":123}ret = Man.objects.create(**d1)# 或ret = Man.objects.create(name="m...原创 2019-10-09 12:05:30 · 1327 阅读 · 0 评论