Opened 8 years ago

Closed 8 years ago

#26767 closed Bug (duplicate)

Modifications to a prefetched many-to-many field should clear the cache

Reported by: Matt d'Entremont Owned by: nobody
Component: Database layer (models, ORM) Version: 1.9
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

We were running into issues with stale data, and discovered that the cause was prefetched data sticking around after field updates.

Example code:

class Books(Model):
    ...
    author = models.ForeignKey('Author', related_name='books')

class Author(Model)
    ...


first_author = Author.objects.prefetch_related('books')[0]
first_author.books = []

print first_author.books.count()  # Gotcha!

After performing the first_author.books = [], the proper changes are made to the through model. However, when performing first_author.books.count(), the result may not be 0; but will instead be the number of books associated with the author before the first_author.books = [] statement.

What would be nice would be either:

  • Update the prefetched cache for a field when a the field is changed
  • Clear the prefetched cache for a field when the field is changed

Change History (1)

comment:1 by Tim Graham, 8 years ago

Resolution: duplicate
Status: newclosed

Duplicate of #26706

Note: See TracTickets for help on using tickets.
Back to Top