Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以覆盖django模型上的.objects?_Python_Django_Filtering - Fatal编程技术网

Python 是否可以覆盖django模型上的.objects?

Python 是否可以覆盖django模型上的.objects?,python,django,filtering,Python,Django,Filtering,默认情况下,我只想返回“published”实例(published=True)。是否可以重写.objects,以便MyModel.objects.all()实际返回MyModel.objects.filter(published=True) 这是否合理?在我确实需要的罕见情况下,如何获取未发布的对象?您可以通过编写一个自定义来实现这一点——只需覆盖get\u queryset方法,并将对象设置为Manager实例。例如: class MyModelManager(models.Manager)

默认情况下,我只想返回“published”实例(published=True)。是否可以重写.objects,以便MyModel.objects.all()实际返回MyModel.objects.filter(published=True)


这是否合理?在我确实需要的罕见情况下,如何获取未发布的对象?

您可以通过编写一个自定义来实现这一点——只需覆盖
get\u queryset
方法,并将
对象设置为Manager实例。例如:

class MyModelManager(models.Manager):
    def get_queryset(self):
        return super(MyModelManager, self).get_queryset().filter(published=True)

class MyModel(models.Model):
    # fields
    # ...

    objects = MyModelManager()

有关详细信息,请参阅。这是明智的,如果这将是你通常的默认情况。要取消发布,请创建另一个管理器,您可以使用类似于
MyModel.unpublished_objects
的方法访问它。同样,文档中也有关于这类事情的例子。

答案完全正确。应标记为正确@willcritchlow!如何从
MyModel
更新寄存器?当我尝试这样做时,我收到的
对象没有属性“bulk\u update”