【问题标题】:Excluding fields while using Values()使用 Values() 时排除字段
【发布时间】:2018-07-24 21:03:14
【问题描述】:

我有一个模特XYZ(name,age,sex), 我正在使用XYZ.objects.filter(name='ddd').values() 获取所有字段 这将返回dict 中的所有字段。如何排除字段age

我尝试了以下方法,但它不起作用

XYZ.objects.filter(name='').exclude('sex').values()

【问题讨论】:

  • 将所有字段列表放入values exclude 不是用于选择器,而是用于过滤器。
  • 谢谢,但在我的真实模型中,我有 48 个属性,所以我可以通过任何方式做到这一点,而无需命名每个属性

标签: python django python-3.x


【解决方案1】:

使用这个

XYZ.objects.filter(name='ddd').defer('age')      

OR

XYZ.objects.values('name','sex').filter(name='ddd')

OR 

fields = XYZ._meta.get_fields() # Try
fields.remove('age')
XYZ.object.filter(name='ddd').values(*fields)

OR

fields = list(XYZ._meta.get_fields())
fieldslist = [field.name for field in fields]  
XYZ.object.filter(name='ddd').values(*fieldslist)   

将所有字段列表放入值中,排除不是用于选择器,而是用于过滤器。

【讨论】:

  • 谢谢,但在我的真实模型中,我有 48 个属性,所以我可以通过任何方式做到这一点,而无需为每个属性命名@anup yadav
  • 使用这个XYZ._meta.get_fields()docs.djangoproject.com/en/1.11/ref/models/meta
  • 如何过滤器和 ._meta 一起尝试?这只是为了获取要添加到 Django ORM 选择中的字段列表
猜你喜欢
  • 2013-05-27
  • 2015-02-14
  • 2011-12-14
  • 2013-12-03
  • 2021-07-11
  • 2015-09-22
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多