pip install mysqlclient
User.objects.filter(age__lt=10) # 用户表年龄小于筛选
User.objects.filter(name__in=name_list) # 用户姓名包含在列表中
class Concat(Aggregate):
"""ORM用来分组显示其他字段 相当于group_concat"""
function = 'GROUP_CONCAT'
template = '%(function)s(%(distinct)s%(expressions)s)'
def __init__(self, expression, distinct=False, **extra):
super(Concat, self).__init__(
expression,
distinct='DISTINCT ' if distinct else '',
output_field=CharField(),
**extra)
User.objects.values('age', 'sex').annotate(name=Concat("name")) # 相同年龄和性别的用户分组,并将 name 字段合并,用逗号隔开
最好在初始化的时候就确认好用户表的拓展字段,防止后续更新拓展出现迁移困难的问题。
models.py
添加如下代码:from django.contrib.auth.models import AbstractUser
class UserRecord(AbstractUser):
name = models.CharField(max_length=150, null=True)
age = models.IntegerField(null=True)
class Meta:
db_table = "user_record"
settings.py
添加如下代码:AUTH_USER_MODEL="django_cas_server.UserRecord"
使用 .count()
方法,而不是 len(records)
。.count()
使用的是 SQL COUNT(*)
的方式,性能效果会更好。
# 示例
user_records_count = UserRecord.objects.filter(age=18).count()
# HTTP 部分
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS = 'DENY'
# HTTPS 部分
SECURE_HSTS_SECONDS = 3600
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True