在Django get_object_or_404中选择特定字段

时间:2016-09-19 05:09:05

标签: python sql django django-models model

我在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完成此操作?

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

2 个答案:

答案 0 :(得分:6)

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

  

必需参数

     

<强>克拉斯

     

要从中的Model类,Manager或QuerySet实例   得到对象。

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

obj = get_object_or_404(MyModel.objects.only('param_1', 'param_2'), pk=1)

答案 1 :(得分:1)

第一个参数是模型的类名,所有其他参数都是将传递给get的参数。所以它不能在这里使用,但模仿它的功能非常简单。

var slideshow = {
    sliderImages: ["img/img1.png", "img/img2.png"],
    timer: function() { 
        this.sliderImages.forEach(function(img) {
            var container = document.getElementById('container');
            var image = document.createElement('img');
            container.appendChild(image);
            image.src= img;
        })
    }
}

基于:https://docs.djangoproject.com/en/1.10/_modules/django/shortcuts/#get_object_or_404