我知道如何获得一条线,但我不知道如何获得一个字段。 例如,有一个表,有id,标题,内容字段。
ModelsExample.objects.filter(id = showid)# get one line.
如何只获取标题字段?
答案 0 :(得分:2)
您可以使用values
或values_list
。取决于您希望如何使用旅游环境:
使用values()
示例:
r = ModelsExample.objects.filter(id=showid).values('title')
这会返回类似于[{'title': 'My title'}]
的内容,因此您可以使用r[0]['title']
访问它。
使用values_list()
示例:
r = ModelsExample.objects.filter(id=showid).values_list('title')
这会返回如下内容:[('My title',)]
,因此您可以r[0][0]
访问它。
使用values_list(flat=True)
示例:
r = ModelsExample.objects.filter(id=showid).values_list('title', flat=True)
这会返回如下内容:['My title']
,因此您可以r[0]
访问它。
当然,您始终可以访问模型的每个字段:
r = ModelsExample.objects.get(id=showid)
r.title
答案 1 :(得分:1)
您有两种方式:
ModelsExample.objects.filter(id=showid)[0].title
ModelsExample.objects.filter(id=showid).only('title')[0].title
或
ModelsExample.objects.get(id=showid).title
首先获取集合并获取第一个元素。如果集合中没有元素,则会引发IndexError
。
第二个获得一个元素。如果在DB中您有更多元素,则会引发MultipleObjectsReturned
。如果找不到任何行,则会引发NoResultFound
。
答案 2 :(得分:0)
您只能获得一个这样的字段
ModelsExample.objects.filter(id = showid).values('title')
https://docs.djangoproject.com/en/1.8/ref/models/querysets/#values
答案 3 :(得分:0)
Model.objects.filter()
将所有匹配结果作为list
返回。
如果您想获得一行结果,请在过滤器中使用唯一条件,或者您可以使用
Model.objects.filter(condition)[0].values('field)
而不是在filter中使用唯一条件来获得一个结果。使用get()
Model.objects.get(condition).field
根据评论,不是Modle.objects.get(condition).values('field')
。