str魔術方法的使用
from django.db import models
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def __str__(self): # __unicode__ on Python 2
return self.name
object.values()的使用
# This list contains a Blog object.
>>> Blog.objects.filter(name__startswith='Beatles')
[<Blog: Beatles Blog>]
# This list contains a dictionary.
>>> Blog.objects.filter(name__startswith='Beatles').values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]
list_values()的使用
# 獲取多個字段
>>> Entry.objects.values_list('id', 'headline')
[(1, 'First entry'), ...]
# 獲取單個字段
>>> Entry.objects.values_list('id').order_by('id')
[(1,), (2,), (3,), ...]
# 如果只傳遞一個值可以加上flat
>>> Entry.objects.values_list('id', flat=True).order_by('id')
[1, 2, 3, ...]
# 過去number字段
In [1]: from apps.dormitory.models import Building
In [2]: buildings = Building.objects.values('number')
In [3]: buildings
Out[3]: [{'number': u'1'}, {'number': u'2'}, {'number': u'3'}, {'number': u'4'}, {'number': u'5'}]
In [4]: buildings_ = Building.objects.values_list('number')
In [5]: buildings_
Out[5]: [(u'1',), (u'2',), (u'3',), (u'4',), (u'5',)]
In [6]: buildings_list = Building.objects.values_list('number', flat=True)
In [7]: buildings_list
Out[7]: [u'1', u'2', u'3', u'4', u'5']
從以上代碼可以看出:
values方法可以獲取number字段的字典列表。
values_list可以獲取number的元組列表。
values_list方法加個參數flat=True可以獲取number的值列表。