创建对象
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
.