plain.models 0.41.0__py3-none-any.whl → 0.42.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -122,15 +122,13 @@ class ForwardManyToOneDescriptor:
122
122
  def is_cached(self, instance):
123
123
  return self.field.is_cached(instance)
124
124
 
125
- def get_queryset(self, **hints):
126
- qs = self.field.remote_field.model._base_manager.get_queryset()
127
- qs._add_hints(**hints)
125
+ def get_queryset(self):
126
+ qs = self.field.remote_field.model._meta.base_queryset
128
127
  return qs.all()
129
128
 
130
129
  def get_prefetch_queryset(self, instances, queryset=None):
131
130
  if queryset is None:
132
131
  queryset = self.get_queryset()
133
- queryset._add_hints(instance=instances[0])
134
132
 
135
133
  rel_obj_attr = self.field.get_foreign_related_value
136
134
  instance_attr = self.field.get_local_related_value
@@ -170,7 +168,7 @@ class ForwardManyToOneDescriptor:
170
168
  )
171
169
 
172
170
  def get_object(self, instance):
173
- qs = self.get_queryset(instance=instance)
171
+ qs = self.get_queryset()
174
172
  # Assuming the database enforces foreign keys, this won't fail.
175
173
  return qs.get(self.field.get_reverse_related_filter(instance))
176
174
 
@@ -310,7 +308,7 @@ class ReverseManyToOneDescriptor:
310
308
  related_model = self.rel.related_model
311
309
 
312
310
  return create_reverse_many_to_one_manager(
313
- related_model._default_manager.__class__,
311
+ related_model.query.__class__,
314
312
  self.rel,
315
313
  )
316
314
 
@@ -347,24 +345,27 @@ def create_reverse_many_to_one_manager(superclass, rel):
347
345
  """
348
346
  Create a manager for the reverse side of a many-to-one relation.
349
347
 
350
- This manager subclasses another manager, generally the default manager of
351
- the related model, and adds behaviors specific to many-to-one relations.
348
+ This manager adds behaviors specific to many-to-one relations.
352
349
  """
353
350
 
354
- class RelatedManager(superclass):
351
+ class RelatedManager:
355
352
  def __init__(self, instance):
356
- super().__init__()
357
-
358
- self.instance = instance
359
353
  self.model = rel.related_model
354
+ self.instance = instance
360
355
  self.field = rel.field
361
-
362
356
  self.core_filters = {self.field.name: instance}
357
+ # Store the base queryset class for this model
358
+ self.base_queryset_class = rel.related_model._meta.queryset.__class__
363
359
 
364
- def __call__(self, *, manager):
365
- manager = getattr(self.model, manager)
366
- manager_class = create_reverse_many_to_one_manager(manager.__class__, rel)
367
- return manager_class(self.instance)
360
+ @property
361
+ def query(self):
362
+ """
363
+ Access the QuerySet for this relationship.
364
+
365
+ Example:
366
+ parent.children.query.filter(active=True)
367
+ """
368
+ return self.get_queryset()
368
369
 
369
370
  def _check_fk_val(self):
370
371
  for field in self.field.foreign_related_fields:
@@ -378,7 +379,6 @@ def create_reverse_many_to_one_manager(superclass, rel):
378
379
  """
379
380
  Filter the queryset for the instance this manager is bound to.
380
381
  """
381
- queryset._add_hints(instance=self.instance)
382
382
  queryset._defer_next_filter = True
383
383
  queryset = queryset.filter(**self.core_filters)
384
384
  for field in self.field.foreign_related_fields:
@@ -430,14 +430,13 @@ def create_reverse_many_to_one_manager(superclass, rel):
430
430
  self.field.remote_field.get_cache_name()
431
431
  ]
432
432
  except (AttributeError, KeyError):
433
- queryset = super().get_queryset()
433
+ # Use the base queryset class for this model
434
+ queryset = self.base_queryset_class(model=self.model)
434
435
  return self._apply_rel_filters(queryset)
435
436
 
436
437
  def get_prefetch_queryset(self, instances, queryset=None):
437
438
  if queryset is None:
438
- queryset = super().get_queryset()
439
-
440
- queryset._add_hints(instance=instances[0])
439
+ queryset = self.base_queryset_class(model=self.model)
441
440
 
442
441
  rel_obj_attr = self.field.get_local_related_value
443
442
  instance_attr = self.field.get_foreign_related_value
@@ -474,7 +473,7 @@ def create_reverse_many_to_one_manager(superclass, rel):
474
473
  "the object first."
475
474
  )
476
475
  ids.append(obj.id)
477
- self.model._base_manager.filter(id__in=ids).update(
476
+ self.model._meta.base_queryset.filter(id__in=ids).update(
478
477
  **{
479
478
  self.field.name: self.instance,
480
479
  }
@@ -488,17 +487,17 @@ def create_reverse_many_to_one_manager(superclass, rel):
488
487
  def create(self, **kwargs):
489
488
  self._check_fk_val()
490
489
  kwargs[self.field.name] = self.instance
491
- return super().create(**kwargs)
490
+ return self.base_queryset_class(model=self.model).create(**kwargs)
492
491
 
493
492
  def get_or_create(self, **kwargs):
494
493
  self._check_fk_val()
495
494
  kwargs[self.field.name] = self.instance
496
- return super().get_or_create(**kwargs)
495
+ return self.base_queryset_class(model=self.model).get_or_create(**kwargs)
497
496
 
498
497
  def update_or_create(self, **kwargs):
499
498
  self._check_fk_val()
500
499
  kwargs[self.field.name] = self.instance
501
- return super().update_or_create(**kwargs)
500
+ return self.base_queryset_class(model=self.model).update_or_create(**kwargs)
502
501
 
503
502
  # remove() and clear() are only provided if the ForeignKey can have a
504
503
  # value of null.
@@ -601,7 +600,7 @@ class ManyToManyDescriptor(ReverseManyToOneDescriptor):
601
600
  related_model = self.rel.related_model if self.reverse else self.rel.model
602
601
 
603
602
  return create_forward_many_to_many_manager(
604
- related_model._default_manager.__class__,
603
+ related_model.query.__class__,
605
604
  self.rel,
606
605
  reverse=self.reverse,
607
606
  )
@@ -618,14 +617,11 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
618
617
  """
619
618
  Create a manager for the either side of a many-to-many relation.
620
619
 
621
- This manager subclasses another manager, generally the default manager of
622
- the related model, and adds behaviors specific to many-to-many relations.
620
+ This manager adds behaviors specific to many-to-many relations.
623
621
  """
624
622
 
625
- class ManyRelatedManager(superclass):
623
+ class ManyRelatedManager:
626
624
  def __init__(self, instance=None):
627
- super().__init__()
628
-
629
625
  self.instance = instance
630
626
 
631
627
  if not reverse:
@@ -643,6 +639,9 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
643
639
  self.target_field_name = rel.field.m2m_field_name()
644
640
  self.symmetrical = False
645
641
 
642
+ # Store the base queryset class for this model
643
+ self.base_queryset_class = self.model._meta.queryset.__class__
644
+
646
645
  self.through = rel.through
647
646
  self.reverse = reverse
648
647
 
@@ -671,12 +670,15 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
671
670
  "a many-to-many relationship can be used."
672
671
  )
673
672
 
674
- def __call__(self, *, manager):
675
- manager = getattr(self.model, manager)
676
- manager_class = create_forward_many_to_many_manager(
677
- manager.__class__, rel, reverse
678
- )
679
- return manager_class(instance=self.instance)
673
+ @property
674
+ def query(self):
675
+ """
676
+ Access the QuerySet for this relationship.
677
+
678
+ Example:
679
+ book.authors.query.filter(active=True)
680
+ """
681
+ return self.get_queryset()
680
682
 
681
683
  def _build_remove_filters(self, removed_vals):
682
684
  filters = Q.create([(self.source_field_name, self.related_val)])
@@ -702,7 +704,6 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
702
704
  """
703
705
  Filter the queryset for the instance this manager is bound to.
704
706
  """
705
- queryset._add_hints(instance=self.instance)
706
707
  queryset._defer_next_filter = True
707
708
  return queryset._next_is_sticky().filter(**self.core_filters)
708
709
 
@@ -716,14 +717,13 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
716
717
  try:
717
718
  return self.instance._prefetched_objects_cache[self.prefetch_cache_name]
718
719
  except (AttributeError, KeyError):
719
- queryset = super().get_queryset()
720
+ queryset = self.base_queryset_class(model=self.model)
720
721
  return self._apply_rel_filters(queryset)
721
722
 
722
723
  def get_prefetch_queryset(self, instances, queryset=None):
723
724
  if queryset is None:
724
- queryset = super().get_queryset()
725
+ queryset = self.base_queryset_class(model=self.model)
725
726
 
726
- queryset._add_hints(instance=instances[0])
727
727
  queryset = _filter_prefetch_queryset(
728
728
  queryset._next_is_sticky(), self.query_field_name, instances
729
729
  )
@@ -785,8 +785,10 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
785
785
  def clear(self):
786
786
  with transaction.atomic(savepoint=False):
787
787
  self._remove_prefetched_objects()
788
- filters = self._build_remove_filters(super().get_queryset())
789
- self.through._default_manager.filter(filters).delete()
788
+ filters = self._build_remove_filters(
789
+ self.base_queryset_class(model=self.model)
790
+ )
791
+ self.through.query.filter(filters).delete()
790
792
 
791
793
  def set(self, objs, *, clear=False, through_defaults=None):
792
794
  # Force evaluation of `objs` in case it's a queryset whose value
@@ -820,12 +822,14 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
820
822
  self.add(*new_objs, through_defaults=through_defaults)
821
823
 
822
824
  def create(self, *, through_defaults=None, **kwargs):
823
- new_obj = super().create(**kwargs)
825
+ new_obj = self.base_queryset_class(model=self.model).create(**kwargs)
824
826
  self.add(new_obj, through_defaults=through_defaults)
825
827
  return new_obj
826
828
 
827
829
  def get_or_create(self, *, through_defaults=None, **kwargs):
828
- obj, created = super().get_or_create(**kwargs)
830
+ obj, created = self.base_queryset_class(model=self.model).get_or_create(
831
+ **kwargs
832
+ )
829
833
  # We only need to add() if created because if we got an object back
830
834
  # from get() then the relationship already exists.
831
835
  if created:
@@ -833,7 +837,9 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
833
837
  return obj, created
834
838
 
835
839
  def update_or_create(self, *, through_defaults=None, **kwargs):
836
- obj, created = super().update_or_create(**kwargs)
840
+ obj, created = self.base_queryset_class(model=self.model).update_or_create(
841
+ **kwargs
842
+ )
837
843
  # We only need to add() if created because if we got an object back
838
844
  # from get() then the relationship already exists.
839
845
  if created:
@@ -871,9 +877,7 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
871
877
  Return the subset of ids of `objs` that aren't already assigned to
872
878
  this relationship.
873
879
  """
874
- vals = self.through._default_manager.values_list(
875
- target_field_name, flat=True
876
- ).filter(
880
+ vals = self.through.query.values_list(target_field_name, flat=True).filter(
877
881
  **{
878
882
  source_field_name: self.related_val[0],
879
883
  f"{target_field_name}__in": target_ids,
@@ -899,7 +903,7 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
899
903
  )
900
904
  with transaction.atomic(savepoint=False):
901
905
  # Add the ones that aren't there already.
902
- self.through._default_manager.bulk_create(
906
+ self.through.query.bulk_create(
903
907
  [
904
908
  self.through(
905
909
  **through_defaults,
@@ -930,7 +934,7 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
930
934
  old_ids.add(obj)
931
935
 
932
936
  with transaction.atomic(savepoint=False):
933
- target_model_qs = super().get_queryset()
937
+ target_model_qs = self.base_queryset_class(model=self.model)
934
938
  if target_model_qs._has_filters():
935
939
  old_vals = target_model_qs.filter(
936
940
  **{f"{self.target_field.target_field.attname}__in": old_ids}
@@ -938,6 +942,6 @@ def create_forward_many_to_many_manager(superclass, rel, reverse):
938
942
  else:
939
943
  old_vals = old_ids
940
944
  filters = self._build_remove_filters(old_vals)
941
- self.through._default_manager.filter(filters).delete()
945
+ self.through.query.filter(filters).delete()
942
946
 
943
947
  return ManyRelatedManager
@@ -53,7 +53,7 @@ def get_normalized_value(value, lhs):
53
53
  try:
54
54
  value_list.append(getattr(value, source.attname))
55
55
  except AttributeError:
56
- # A case like Restaurant.objects.filter(place=restaurant_instance),
56
+ # A case like Restaurant.query.filter(place=restaurant_instance),
57
57
  # where place is a OneToOneField and the primary key of Restaurant.
58
58
  return (value.id,)
59
59
  return tuple(value_list)
@@ -88,7 +88,7 @@ class RelatedIn(In):
88
88
  and self.lhs.output_field.model == self.rhs.model
89
89
  ):
90
90
  # A case like
91
- # Restaurant.objects.filter(place__in=restaurant_qs), where
91
+ # Restaurant.query.filter(place__in=restaurant_qs), where
92
92
  # place is a OneToOneField and the primary key of
93
93
  # Restaurant.
94
94
  target_field = self.lhs.field.name
@@ -166,7 +166,7 @@ class ForeignObjectRel(FieldCacheMixin):
166
166
  initially for utilization by RelatedFieldListFilter.
167
167
  """
168
168
  limit_choices_to = limit_choices_to or self.limit_choices_to
169
- qs = self.related_model._default_manager.complex_filter(limit_choices_to)
169
+ qs = self.related_model.query.complex_filter(limit_choices_to)
170
170
  if ordering:
171
171
  qs = qs.order_by(*ordering)
172
172
  return (blank_choice if include_blank else []) + [(x.id, str(x)) for x in qs]
plain/models/forms.py CHANGED
@@ -721,7 +721,7 @@ def modelfield_to_formfield(
721
721
 
722
722
  if isinstance(modelfield, models.ForeignKey):
723
723
  return ModelChoiceField(
724
- queryset=modelfield.remote_field.model._default_manager,
724
+ queryset=modelfield.remote_field.model.query,
725
725
  **defaults,
726
726
  )
727
727
 
@@ -152,7 +152,6 @@ class MigrationAutodetector:
152
152
  self.generate_deleted_models()
153
153
  self.generate_created_models()
154
154
  self.generate_altered_options()
155
- self.generate_altered_managers()
156
155
  self.generate_altered_db_table_comment()
157
156
 
158
157
  # Create the renamed fields and store them in self.renamed_fields.
@@ -600,7 +599,6 @@ class MigrationAutodetector:
600
599
  ],
601
600
  options=model_state.options,
602
601
  bases=model_state.bases,
603
- managers=model_state.managers,
604
602
  ),
605
603
  dependencies=dependencies,
606
604
  beginning=True,
@@ -1258,22 +1256,6 @@ class MigrationAutodetector:
1258
1256
  ),
1259
1257
  )
1260
1258
 
1261
- def generate_altered_managers(self):
1262
- for package_label, model_name in sorted(self.kept_model_keys):
1263
- old_model_name = self.renamed_models.get(
1264
- (package_label, model_name), model_name
1265
- )
1266
- old_model_state = self.from_state.models[package_label, old_model_name]
1267
- new_model_state = self.to_state.models[package_label, model_name]
1268
- if old_model_state.managers != new_model_state.managers:
1269
- self.add_operation(
1270
- package_label,
1271
- operations.AlterModelManagers(
1272
- name=model_name,
1273
- managers=new_model_state.managers,
1274
- ),
1275
- )
1276
-
1277
1259
  def arrange_for_graph(self, changes, graph, migration_name=None):
1278
1260
  """
1279
1261
  Take a result from changes() and a MigrationGraph, and fix the names
@@ -2,7 +2,6 @@ from .fields import AddField, AlterField, RemoveField, RenameField
2
2
  from .models import (
3
3
  AddConstraint,
4
4
  AddIndex,
5
- AlterModelManagers,
6
5
  AlterModelOptions,
7
6
  AlterModelTable,
8
7
  AlterModelTableComment,
@@ -34,5 +33,4 @@ __all__ = [
34
33
  "SeparateDatabaseAndState",
35
34
  "RunSQL",
36
35
  "RunPython",
37
- "AlterModelManagers",
38
36
  ]
@@ -41,16 +41,14 @@ class ModelOperation(Operation):
41
41
  class CreateModel(ModelOperation):
42
42
  """Create a model's table."""
43
43
 
44
- serialization_expand_args = ["fields", "options", "managers"]
44
+ serialization_expand_args = ["fields", "options"]
45
45
 
46
- def __init__(self, name, fields, options=None, bases=None, managers=None):
46
+ def __init__(self, name, fields, options=None, bases=None):
47
47
  self.fields = fields
48
48
  self.options = options or {}
49
49
  self.bases = bases or (models.Model,)
50
- self.managers = managers or []
51
50
  super().__init__(name)
52
- # Sanity-check that there are no duplicated field names, bases, or
53
- # manager names
51
+ # Sanity-check that there are no duplicated field names or bases
54
52
  _check_for_duplicates("fields", (name for name, _ in self.fields))
55
53
  _check_for_duplicates(
56
54
  "bases",
@@ -63,7 +61,6 @@ class CreateModel(ModelOperation):
63
61
  for base in self.bases
64
62
  ),
65
63
  )
66
- _check_for_duplicates("managers", (name for name, _ in self.managers))
67
64
 
68
65
  def deconstruct(self):
69
66
  kwargs = {
@@ -74,8 +71,6 @@ class CreateModel(ModelOperation):
74
71
  kwargs["options"] = self.options
75
72
  if self.bases and self.bases != (models.Model,):
76
73
  kwargs["bases"] = self.bases
77
- if self.managers and self.managers != [("objects", models.Manager())]:
78
- kwargs["managers"] = self.managers
79
74
  return (self.__class__.__qualname__, [], kwargs)
80
75
 
81
76
  def state_forwards(self, package_label, state):
@@ -86,7 +81,6 @@ class CreateModel(ModelOperation):
86
81
  list(self.fields),
87
82
  dict(self.options),
88
83
  tuple(self.bases),
89
- list(self.managers),
90
84
  )
91
85
  )
92
86
 
@@ -141,7 +135,6 @@ class CreateModel(ModelOperation):
141
135
  fields=self.fields,
142
136
  options=self.options,
143
137
  bases=self.bases,
144
- managers=self.managers,
145
138
  ),
146
139
  ]
147
140
  elif (
@@ -158,20 +151,6 @@ class CreateModel(ModelOperation):
158
151
  fields=self.fields,
159
152
  options=options,
160
153
  bases=self.bases,
161
- managers=self.managers,
162
- ),
163
- ]
164
- elif (
165
- isinstance(operation, AlterModelManagers)
166
- and self.name_lower == operation.name_lower
167
- ):
168
- return [
169
- CreateModel(
170
- self.name,
171
- fields=self.fields,
172
- options=self.options,
173
- bases=self.bases,
174
- managers=operation.managers,
175
154
  ),
176
155
  ]
177
156
  elif (
@@ -185,7 +164,6 @@ class CreateModel(ModelOperation):
185
164
  fields=self.fields + [(operation.name, operation.field)],
186
165
  options=self.options,
187
166
  bases=self.bases,
188
- managers=self.managers,
189
167
  ),
190
168
  ]
191
169
  elif isinstance(operation, AlterField):
@@ -198,7 +176,6 @@ class CreateModel(ModelOperation):
198
176
  ],
199
177
  options=self.options,
200
178
  bases=self.bases,
201
- managers=self.managers,
202
179
  ),
203
180
  ]
204
181
  elif isinstance(operation, RemoveField):
@@ -214,7 +191,6 @@ class CreateModel(ModelOperation):
214
191
  ],
215
192
  options=options,
216
193
  bases=self.bases,
217
- managers=self.managers,
218
194
  ),
219
195
  ]
220
196
  elif isinstance(operation, RenameField):
@@ -229,7 +205,6 @@ class CreateModel(ModelOperation):
229
205
  ],
230
206
  options=options,
231
207
  bases=self.bases,
232
- managers=self.managers,
233
208
  ),
234
209
  ]
235
210
  return super().reduce(operation, package_label)
@@ -447,9 +422,6 @@ class AlterModelOptions(ModelOptionOperation):
447
422
 
448
423
  # Model options we want to compare and preserve in an AlterModelOptions op
449
424
  ALTER_OPTION_KEYS = [
450
- "base_manager_name",
451
- "default_manager_name",
452
- "default_related_name",
453
425
  "ordering",
454
426
  ]
455
427
 
@@ -483,32 +455,6 @@ class AlterModelOptions(ModelOptionOperation):
483
455
  return f"alter_{self.name_lower}_options"
484
456
 
485
457
 
486
- class AlterModelManagers(ModelOptionOperation):
487
- """Alter the model's managers."""
488
-
489
- serialization_expand_args = ["managers"]
490
-
491
- def __init__(self, name, managers):
492
- self.managers = managers
493
- super().__init__(name)
494
-
495
- def deconstruct(self):
496
- return (self.__class__.__qualname__, [self.name, self.managers], {})
497
-
498
- def state_forwards(self, package_label, state):
499
- state.alter_model_managers(package_label, self.name_lower, self.managers)
500
-
501
- def database_forwards(self, package_label, schema_editor, from_state, to_state):
502
- pass
503
-
504
- def describe(self):
505
- return f"Change managers on {self.name}"
506
-
507
- @property
508
- def migration_name_fragment(self):
509
- return f"alter_{self.name_lower}_managers"
510
-
511
-
512
458
  class IndexOperation(Operation):
513
459
  option_name = "indexes"
514
460
 
@@ -49,10 +49,9 @@ class RunSQL(Operation):
49
49
  by this SQL change, in case it's custom column/table creation/deletion.
50
50
  """
51
51
 
52
- def __init__(self, sql, *, state_operations=None, hints=None, elidable=False):
52
+ def __init__(self, sql, *, state_operations=None, elidable=False):
53
53
  self.sql = sql
54
54
  self.state_operations = state_operations or []
55
- self.hints = hints or {}
56
55
  self.elidable = elidable
57
56
 
58
57
  def deconstruct(self):
@@ -61,8 +60,6 @@ class RunSQL(Operation):
61
60
  }
62
61
  if self.state_operations:
63
62
  kwargs["state_operations"] = self.state_operations
64
- if self.hints:
65
- kwargs["hints"] = self.hints
66
63
  return (self.__class__.__qualname__, [], kwargs)
67
64
 
68
65
  def state_forwards(self, package_label, state):
@@ -99,13 +96,12 @@ class RunPython(Operation):
99
96
 
100
97
  reduces_to_sql = False
101
98
 
102
- def __init__(self, code, *, atomic=None, hints=None, elidable=False):
99
+ def __init__(self, code, *, atomic=None, elidable=False):
103
100
  self.atomic = atomic
104
101
  # Forwards code
105
102
  if not callable(code):
106
103
  raise ValueError("RunPython must be supplied with a callable")
107
104
  self.code = code
108
- self.hints = hints or {}
109
105
  self.elidable = elidable
110
106
 
111
107
  def deconstruct(self):
@@ -114,8 +110,6 @@ class RunPython(Operation):
114
110
  }
115
111
  if self.atomic is not None:
116
112
  kwargs["atomic"] = self.atomic
117
- if self.hints:
118
- kwargs["hints"] = self.hints
119
113
  return (self.__class__.__qualname__, [], kwargs)
120
114
 
121
115
  def state_forwards(self, package_label, state):
@@ -53,7 +53,7 @@ class MigrationRecorder:
53
53
 
54
54
  @property
55
55
  def migration_qs(self):
56
- return self.Migration.objects.all()
56
+ return self.Migration.query.all()
57
57
 
58
58
  def has_table(self):
59
59
  """Return True if the plainmigrations table exists."""
@@ -215,16 +215,6 @@ class ModelFieldSerializer(DeconstructableSerializer):
215
215
  return self.serialize_deconstructed(path, args, kwargs)
216
216
 
217
217
 
218
- class ModelManagerSerializer(DeconstructableSerializer):
219
- def serialize(self):
220
- as_manager, manager_path, qs_path, args, kwargs = self.value.deconstruct()
221
- if as_manager:
222
- name, imports = self._serialize_path(qs_path)
223
- return f"{name}.as_manager()", imports
224
- else:
225
- return self.serialize_deconstructed(manager_path, args, kwargs)
226
-
227
-
228
218
  class OperationSerializer(BaseSerializer):
229
219
  def serialize(self):
230
220
  from plain.models.migrations.writer import OperationWriter
@@ -359,8 +349,6 @@ def serializer_factory(value):
359
349
 
360
350
  if isinstance(value, models.Field):
361
351
  return ModelFieldSerializer(value)
362
- if isinstance(value, models.manager.BaseManager):
363
- return ModelManagerSerializer(value)
364
352
  if isinstance(value, Operation):
365
353
  return OperationSerializer(value)
366
354
  if isinstance(value, type):