【发布时间】:2021-09-19 05:49:47
【问题描述】:
我正在尝试仅获取模型中的一些列名,我正在尝试使用下面的查询但它不起作用,请你帮帮我。正确的使用方法是什么。
view.py
def get(self, request):
'''
API function to Get all Objects
'''
try:
emp = EMP.objects.all()
serializer = EmpSerializer(emp, many=True).data
return Response({'status': 200, 'data': serializer, 'message': 'All data'})
except Exception as e:
print(e)
return Response({'status': 500, 'message': 'Something went wrong'})
Models.py
class EMP(models.Model):
A = models.AutoField(primary_key=True)
B = models.CharField(max_length=70, blank=False, default='')
C = models.CharField(max_length=10, blank=False, default='')
D = models.CharField(max_length=200)
E = models.CharField(max_length=10)
F = models.CharField(max_length=10)
G = models.CharField(max_length=10)
H = models.CharField(max_length=100)
Serializer.py
class EmpSerializer(serializers.ModelSerializer):
class Meta:
model = EMP
fields = ('A',
'B',
'C',
'D',
'E',
'F',
'G')
但是当我尝试以下查询时,我能够获取所有列
emp = EMP.objects.all()
如果我只尝试某些列,我会收到错误
emp = EMP.objects.values('A','B','C')
请帮助我,提前谢谢!!!
【问题讨论】:
-
.all()不是指所有的列,而是指所有的记录(行)。 -
好的,但是我只需要行中的一些列,什么是正确的查询或方法应该使用?
-
如果我使用 `emp= EMP.objects.all().values('A') ` ` 尝试获取字段 'D' 的值时出现 KeyError序列化程序“D”。\n序列化程序字段可能命名不正确,并且与 dict 实例上的任何属性或键都不匹配。\n原始异常文本为:“D”。 `
-
.only('A', 'B', 'C') -
此外在序列化程序中设置
fields = ['A', 'B', 'C']。序列化程序确定将返回/更新哪些数据。
标签: django orm django-orm