一尘不染

在Django中选择特定字段get_object_or_404

sql

我在Django中有一个模型,其中包含太多字段。前任:

class MyModel(models.Model):
    param_1 = models.CharField(max_length=100)
    ...
    param_25 = models.CharField(max_length=100)

现在,我需要获取基于ID的详细信息视图。我已经见过类似的方法,

obj = MyModel.objects.get(pk=5)
obj = MyModel.objects.filter(pk=5)[0]
obj = get_object_or_404(MyModel, pk=1)

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

SELECT "param_1" FROM mymodel WHERE pk=1

如何使用get_object_or_404完成此操作?

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


阅读 124

收藏
2021-05-30

共1个答案

一尘不染

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

必填参数

克拉斯

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

因此,您所要做的就是传递预先过滤的QuerySet,例如only

obj = get_object_or_404(MyModel.objects.only('param_1', 'param_2'), pk=1)
2021-05-30