-
receiver (Django signal)的使用
@receiver(post_save, sender=Mymodel, dispatch_uid="mymodel_post_save") def my_model_handler(sender, **kwargs): print('Saved: {}'.format(kwargs['instance'].__dict__))
模型相关:
- pre_save 对象 save 前触发
- post_save 对象 save 后触发
- pre_delete 对象 delete 前触发
- post_detele 对象 delete 后触发
- m2m_changed ManyToManyField 字段更新后触发
请求相关:
- request_started 一个 request 请求前触发
- request_finished 一个 request 请求后触发
-
bulk_update 的使用
用于批量更新数据>>> objs = [ ... Entry.objects.create(headline='Entry 1'), ... Entry.objects.create(headline='Entry 2'), ... ] >>> objs[0].headline = 'This is entry 1' >>> objs[1].headline = 'This is entry 2' >>> Entry.objects.bulk_update(objs, ['headline'])
-
bulk_create 的使用
用于批量创建数据>>> Entry.objects.bulk_create([ ... Entry(headline='This is a test'), ... Entry(headline='This is only a test'), ... ])
-
Django filter 常用方法
__exact
精确等于 like ‘aaa’
__iexact
精确等于 忽略大小写 ilike ‘aaa’
__contains
包含 like ‘%aaa%’
__icontains
包含 忽略大小写 ilike ‘%aaa%’,
__gt
大于
__gte
大于等于
__lt
小于
__lte
小于等于
__in
存在于一个list范围内
__startswith
以…开头
__istartswith
以…开头 忽略大小写
__endswith
以…结尾
__iendswith
以…结尾,忽略大小写
__range
在…范围内
__year
日期字段的年份
__month
日期字段的月份
__day
日期字段的日
__isnull
=True/False -
rest-framework reverse 一些小问题
在使用了 action 装饰器后,自定了一个函数@action(methods=['get'], detail=True) def fun1_xxx(self, ): pass
没有显性定义 url 的情况下,使用 reverse 时,路径应为
reverse('APPNAME-fun1-xxx')
而不是reverse('APPNAME-fun1_xxx')