设为首页 加入收藏

TOP

django进阶-查询(适合GET4以上人群阅读)(一)
2017-10-10 08:26:59 】 浏览:7508
Tags:django 进阶 查询 适合 GET4 以上 人群 阅读

前言: 下篇博客写关于bootstrap...

一、如何在脚本测试django

 1 from django.db import models
 2 
 3 class Blog(models.Model):
 4     name = models.CharField(max_length=100)
 5     tagline = models.TextField()
 6 
 7     def __str__(self):              # __unicode__ on Python 2
 8         return self.name
 9 
10 class Author(models.Model):
11     name = models.CharField(max_length=50)
12     email = models.EmailField()
13 
14     def __str__(self):              # __unicode__ on Python 2
15         return self.name
16 
17 class Entry(models.Model):
18     blog = models.ForeignKey(Blog)
19     headline = models.CharField(max_length=255)
20     body_text = models.TextField()
21     pub_date = models.DateField()
22     mod_date = models.DateField()
23     authors = models.ManyToManyField(Author)
24     n_comments = models.IntegerField()
25     n_pingbacks = models.IntegerField()
26     rating = models.IntegerField()
27 
28     def __str__(self):              # __unicode__ on Python 2
29         return self.headline
View Code

一般往django添加一条数据库,我们会在cmd 下导入django环境后进行测试。
那如何在.py脚本下运行测试呢?

1 import os 2 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day18.settings") 3 
4 import django 5 django.setup()   #导入django环境
6 
7 from blog import models 8 
9 entry=models.Entry.objects.get(pk=1)
10 print(entry)

输出: 屌炸天。

 

二、处理带外键关联或多对多关联的对象

创建

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

This performs an INSERT SQL statement behind the scenes. Django doesn’t hit the database until you explicitly call save().
The save() method has no return value.

ForeignKey的关联

>>> from blog.models import Entry
>>> entry = Entry.objects.get(pk=1)
>>> cheese_blog = Blog.objects.get(name="Cheddar Talk")
>>> entry.blog = cheese_blog
>>> entry.save()

ManyToManyField关联

>>> from blog.models import Author
>>> joe = Author.objects.create(name="Joe")
>>> entry.authors.add(joe)

添加多个ManyToMany对象

>>> 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)

 

三、查询

 1 all_entries = Entry.objects.all() #查询所有
 2 Entry.objects.filter(pub_date__year=2006) #查询所有pub_date为2006年的纪录
 3 Entry.objects.all().filter(pub_date__year=2006) #与上面那句一样
 4 >>> Entry.objects.filter(   #链式查询
 5 ...     headline__startswith='What'
 6 ... ).exclude(  7 ...     pub_date__gte=datetime.date.today()  8 ... ).filter(  9 ...     pub_date__gte=datetime(2005, 1, 30) 10 ... ) 11 
12 one_entry = Entry.objects.get(pk=1) #单条查询
13 
14 Entry.objects.all()[:5] #查询前5条
15 Entry.objects.all()[5:10] #你猜
16 
17 Entry.objects.order_by('headline')[0] #按headline排序取第一条
18 
19 Entry.objects.filter(pub_date__lte='2006-01-01') #相当于sql语句SELECT * FROM blog_entry WHERE pub_date <= '2006-0
首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ImportError: No module named &#.. 下一篇django进阶-查询(适合GET4以上人..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目