新建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