【问题标题】:Django Values() Method is not returing proper valuesDjango Values() 方法没有返回正确的值
【发布时间】: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


【解决方案1】:

您应该在filter()all() 之后使用values()

在这种情况下,你可以这样写:

emp = EMP.objects.all().values('A','B','C')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    相关资源
    最近更新 更多