django model設置str魔術方法 或 使用 objects.values() 或 list_values()

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的值列表。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章