-
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')