Django框架学习三---QuerySet

本文介绍了Django框架中QuerySet的使用,包括创建、更新和获取对象的方法,如filter()、exclude()、order_by()以及如何删除对象。此外,还提及了创建模型管理器的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建对象

1.启动shell
python manager.py shell
2.输入代码
from django.contrib.auth.models import User
from blog.models import Post
user = User.objects.get(username = 'admin')
post = Post(title = 'Another post',slug='anthor-post',body='Post body.',author=user)
post.save()

或者

Post.objects.create(title='One more post',slug='one-more-post',body='Post body',author=user)
post.save()

在这里插入图片描述

更新对象

post.title = 'New title'
post.save()

获取对象

all_post = Post.objects.all()
Post.objects.all()
1.filter()多个字段进行过滤
Post.objects.filter(publish__year=2020)

在这里插入图片描述

2.exclude()排除特定结果

Post.objects.filter(publish__year=2020)\
    .exclude(title__startswith='Why')

3.order_by()排序,默认是升序

Post.objects.order_by('title')

在这里插入图片描述
(’-title’)为降序

4.删除对象

post = Post.objects.get(id=1)
post.delete()

创建模型管理器

from django.contrib.auth.models import User
from django.db import models

# Create your models here.

from django.db import models
from django.utils import timezone


class PublishedManager(models.Manager):
    def get_queryset(self):
        return super(PublishedManager,self).get_queryset().filter(status='published')

class Post(models.Model):
    STATUS_CHOICES = (
        ('draft','Draft'),
        ('published','Published'),
    )
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date='publish')
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft')
    objects = models.Manager()
    published = PublishedManager()

    class Meta:
        ordering = ('-publish',)

    def _str_(self):
        return self.title

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值