django学习笔记-model模型

数据库操作

添加一个用户

def add_one():
    #1
    user = User(open_id='test_open_id', nickname='test_nickname')
    user.save()
    #2
    User.objects.create(open_id='test_open_id2', nickname='test_nickname2')

批量添加用户

def add_batch():
   def add_batch():
    new_user_list = []
    for i in range(10):
        open_id = ranstr(32)
        nickname = ranstr(10)
        user = User(open_id=open_id, nickname=nickname)
        new_user_list.append(user)
    User.objects.bulk_create(new_user_list)

查询

def get_one():
    user = User.objects.get(open_id='test_open_id')

过滤

def get_filter():
    user = User.objects.filter(open_id__contains='test_')
    # open_id__startswith 从某个字符开始
    # 大于: open_id__gt(greater than)
    # 小于: open_id__lt
    # 大于等于:open_id_gte
    # 小于等于:open_id_lte

排序


def get_order():
    users = User.objects.order_by('open_id')

连锁查询


def get_chain():
    users = User.objects.filter(open_id__contains='test_').order_by('open_id')

修改一个


def modify():
    user = User.objects.get(open_id='test_open_id')
    user.nickname = 'modify_username'
    user.save()

批量修改


def modify_batch():
    User.objects.filter(open_id__contains='test_').update(nickname='modify_username')

删除一个

def delete_one():
    User.objects.filter(open_id__contains='test_').delete()

删库跑路

def delete_all():
    User.objects.all().delete()

字符串处理

  • 字符串连接
  • 字符串长度
  • 字符串大小写转换

字符串连接

from django.db.models.functions import Concat
from django.db.models import Value

def concat_function():
    user = User.objects.filter(open_id='test_open_id').annotate(
        screenname=Concat(
            Value('openid='),
            'open_id',
            Value(','),
            Value('nickname='),
            'nickname'
        )
    )[0]
    print(user.screenname)

字符串长度


from django.db.models.functions import Length
def length_function():
    user = User.objects.filter(open_id='test_open_id').annotate(
        open_id_length=Length('open_id')
    )[0]
    print(user.open_id_length)

字符串大小写转换

from django.db.models.functions import Upper,Lower
def case_function():
    user = User.objects.filter(open_id='test_open_id').annotate(
        open_id_Upper=Upper('open_id'),
        open_id_Lower=Lower('open_id')
    )[0]
    print(user.open_id_Upper,'  ',user.open_id_Lower)

日期Now

from apis.models import App
from django.db.models.functions import Now

def now_function():
    apps = App.objects.filter(publish_date__lte=Now())
    for app in apps:
        print(app)

时间截断Trunc

from django.db.models.functions import Trunc
from django.db.models import Count


def trunc_function():
    app_per_day = App.objects.annotate(
        publish_day=Trunc('publish_date','day')
    ).values('publish_day').annotate(
        publish_num=Count('appid')
    )
    for app in app_per_day:
        print('date:', app['publish_day'], ', publish num:', app['publish_num'])


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破落之实

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值