django模型如何获得一个领域?

时间:2015-11-09 12:46:11

标签: django

我知道如何获得一条线,但我不知道如何获得一个字段。 例如,有一个表,有id,标题,内容字段。

ModelsExample.objects.filter(id = showid)# get one line.

如何只获取标题字段?

4 个答案:

答案 0 :(得分:2)

您可以使用valuesvalues_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')