在Django get_object_or_404中选择特定字段

Aru*_*s R 2 python sql django model django-models

我在Django有一个有太多字段的模型.例如:

class MyModel(models.Model):
    param_1 = models.CharField(max_length=100)
    ...
    param_25 = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

现在我需要根据id获取详细信息视图.我见过可能的方法,比如

obj = MyModel.objects.get(pk=5)
obj = MyModel.objects.filter(pk=5)[0]
obj = get_object_or_404(MyModel, pk=1)
Run Code Online (Sandbox Code Playgroud)

最后一种方法最适合,因为我可以在没有任何代码更改的情况下提供404错误.但我只需要param_1和param_2.因此我需要一个类似的查询,

SELECT "param_1" FROM mymodel WHERE pk=1
Run Code Online (Sandbox Code Playgroud)

如何使用get_object_or_404完成此操作?

有人可以帮助找到解决方案吗?

Bur*_*lid 6

第一个参数get_object_or_404可以是Model,Manager或QuerySet:

必需的参数

克拉斯

要从中获取对象的Model类,Manager或QuerySet实例.

因此,您所要做的就是传入预过滤的QuerySet,例如返回的QuerySet only:

obj = get_object_or_404(MyModel.objects.only('param_1', 'param_2'), pk=1)
Run Code Online (Sandbox Code Playgroud)