The difference between "objects" and "_base_manager" is that you can replace "objects" with a user manager, but "_base_manager" will be the default instance of django.db.models.Manager by default. In general, you should not use '_base_manager'. Sometimes Django itself must use "_base_manager" to be sure of its behavior.
from django.db import models
class CommentManager(models.Manager):
pass
class Comment(models.Model):
...
objects = CommentManager()
print(type(Comment.objects))
print(type(Comment._default_manager))
print(type(Comment._base_manager))
To explain "_default_manager", I will give you another simple example:
class Comment(models.Model):
...
custom_objects = CommentManager()
print(type(Comment._default_manager))
print(type(Comment._base_manager))
print(type(Comment.objects))
, , "objects", "_default_manager" ( ) "_base_manager" - django.db.models.Manager.
, Django, :
https://code.djangoproject.com/ticket/25897
, .