django数据库相关操作

来源:互联网 发布:从python开始学编程pdf 编辑:程序博客网 时间:2024/04/30 09:15

创建对象

from blog.models import Blogb = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')b.save()

更新对象

b5.name = 'New name'b5.save

更新外键字段
1.更新Entry的实例entry的blog属性,blog是entry的ForiegnKey

from blog.models import Entryclass Entry(models.Model):    blog = models.ForeignKey(Blog)#ForeignKey和ManyToManyField的字段entry = Entry.objects.get(pk=1)cheese_blog = Blog.objects.get(name="Cheddar Talk")>>> entry.blog = cheese_blog>>> entry.save()

2.更新ManyToManyField

from blog.models import Authorjoe = Author.objects.create(name="Joe")entry.authors.add(joe)john = Author.objects.create(name="John")paul = Author.objects.create(name="Paul")george = Author.objects.create(name="George")ringo = Author.objects.create(name="Ringo")entry.authors.add(john, paul, george, ringo)

3.查询

Blog.objectsb = Blog(name='Foo', tagline='Bar')b.objectsall_entries = Entry.objects.all()

4.按过滤条件查询

# contains包含 相当于likeEntry.objects.filter(pub_date__year=2006) Entry.objects.filter(headline__contains='%')

5.链式过滤器

 Entry.objects.filter(...     headline__startswith='What'... ).exclude(...     pub_date__gte=datetime.date.today()... ).filter(...     pub_date__gte=datetime(2005, 1, 30)... )

6.获取单个对象

one_entry = Entry.objects.get(pk=1)

7.对结果切片

Entry.objects.all()[5:10]Entry.objects.order_by('headline')[0]

8.存在比较关系

# lte小于等于Entry.objects.filter(pub_date__lte='2006-01-01')

9.同model中字段比较F()

#gt大于from django.db.models import FEntry.objects.filter(n_comments__gt=F('n_pingbacks'))

10.Q()

#用|来连接多个sql语句的结果,&,~,|Q(question__startswith='Who') | Q(question__startswith='What')

11.删除对象

e.delete()

12.更新多个对象

Entry.objects.filter(pub_date__year=2007).update(headline='Everything is the same')b = Blog.objects.get(pk=1)Entry.objects.all().update(blog=b)

更多请访问django db queries

0 0