在查询模型时,如何仅检出指定的字段?

时间:2017-09-18 07:43:09

标签: python django django-views django-queryset

如何通过约束查询某些字段的模型,例如我不想查询id和密码。

Class AppUser(models.Model):
    username = models.CharField(max_length=16)
    password = models.CharField(max_length=64)
    email = models.CharField(max_length=16)

现在我查询的情况是:

app_users = models.AppUser.objects.all()  # all the fields will be find out. 

那么,当我查询时,如何只查看指定的字段,我不想显示id和密码?

2 个答案:

答案 0 :(得分:2)

您可以使用valuesvalues_list

app_users = models.AppUser.objects.all().values('email')

或者您可以使用字段列表

values = ['username', 'email']
app_users = models.AppUser.objects.all().values(*values)

更多详情values

答案 1 :(得分:1)

您可以使用defer()only()

例如:app_users = models.AppUser.objects.defer('id', 'password')

将构造一个SQL查询,该查询为SELECT * FROM ....,但不加载idpassworddefer()用于避免加载某些字段。

app_users = models.AppUser.objects.only('id')

现在只会从数据库加载id,这意味着only()用于从数据库中检索特定字段。这些是QuerySet属性,用于Django中的性能优化。

更多关于documentation