mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #28838 -- Fixed Model.save() crash if the base manager annotates with a related field.
This commit is contained in:
parent
cbac11f962
commit
8dc675d90f
3 changed files with 31 additions and 1 deletions
|
@ -25,6 +25,13 @@ class PublishedBookManager(models.Manager):
|
|||
return super().get_queryset().filter(is_published=True)
|
||||
|
||||
|
||||
class AnnotatedBookManager(models.Manager):
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().annotate(
|
||||
favorite_avg=models.Avg('favorite_books__favorite_thing_id')
|
||||
)
|
||||
|
||||
|
||||
class CustomQuerySet(models.QuerySet):
|
||||
def filter(self, *args, **kwargs):
|
||||
queryset = super().filter(fun=True)
|
||||
|
@ -131,7 +138,6 @@ class Book(models.Model):
|
|||
title = models.CharField(max_length=50)
|
||||
author = models.CharField(max_length=30)
|
||||
is_published = models.BooleanField(default=False)
|
||||
published_objects = PublishedBookManager()
|
||||
authors = models.ManyToManyField(Person, related_name='books')
|
||||
fun_authors = models.ManyToManyField(FunPerson, related_name='books')
|
||||
favorite_things = GenericRelation(
|
||||
|
@ -145,6 +151,12 @@ class Book(models.Model):
|
|||
object_id_field='favorite_thing_id',
|
||||
)
|
||||
|
||||
published_objects = PublishedBookManager()
|
||||
annotated_objects = AnnotatedBookManager()
|
||||
|
||||
class Meta:
|
||||
base_manager_name = 'annotated_objects'
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue