记录学习笔记、分享资源工具、交流技术思想、提升工作效率

django学习记录

后端 xiaomudk 4年前 (2017-06-18) 100次浏览 0个评论

新建app时增加数据库表

# python3 manage.py makemigrations appname
# python3 manage.py migrate appname

如果发现这两条执行过,没有创建新的表。可以看下django_migrations表中是否已经存在这个appname了
如果有的话,执行删除:

delect from django_migrations where app='appname';

然后再执行上面的两条语句创建表,即可。

模板中注释

  • 单行注释
{# 这里是注释 #}
  • 块注释
{% comment %} 
这里是注释 
{% endcomment %} 

django 数据模型中 null=True 和 blank=True 区别

null:
    If True, Django will store empty values as NULL in the database. Default
is False.
    如果为True,空值将会被存储为NULL,默认为False。
blank:
    If True, the field is allowed to be blank. Default is False.
    如果为True,字段允许为空,默认不允许。

django中orm 查到的数据转成dict

SomeModel.objects.filter(id=instance.id).values()[0]

查看sql语句

  • 针对select,可以使用query
from django.contrib.auth.models import User
print User.objects.filter(last_name__icontains = 'ax').query
  • 比较通用查看方式,该方法会打印出所有执行过的sql语句
from django.db import connection
connection.queries

django 使用sql 的case 批量修改

from django.db.models import Case, When, Value

order_list = [1, 2, 3, 4]
when_list = []
for oid, visual_id in enumerate(order_list):
      when_list.append(When(id=visual_id, then=Value(oid)))
ES_Visualization.objects.filter(dashboard=instance).update(oid=Case(*when_list, default=Value("99999")))

转化成的sql:

UPDATE visualization
SET oid = CASE
    WHEN visualization.id = 1 THEN 0
    WHEN visualization.id = 2 THEN 1
    WHEN visualization.id = 3 THEN 2
    ELSE '99999'
END
WHERE visualization.dashboard_id = 1

django文档: https://docs.djangoproject.com/en/2.0/ref/models/conditional-expressions/#django.db.models.expressions.Case


本网站采用知识共享署名-相同方式共享 4.0 国际许可协议进行授权
转载请注明原文链接:django学习记录
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址