jazzband / django-model-utils

Django model mixins and utilities.
https://django-model-utils.readthedocs.io
BSD 3-Clause "New" or "Revised" License
2.66k stars 364 forks source link

Query includes softDeleted relations #476

Open yesyves opened 3 years ago

yesyves commented 3 years ago

Problem

I have a model class SemesterReviewer consisting of a User FK and a Semester FK. A query for users based on the SemesterReviewer relation returns objects whose SemesterReviewer relation was previously softDeleted.

Environment

Code examples

Here is a trimmed down example :

class SemesterReviewer(SoftDeletableModel):
    id = models.UUIDField(
        default=uuid.uuid4,
        primary_key=True,
    )
    semester = models.ForeignKey(
        Semester,
        verbose_name=_('Semester'),
    )
    reviewer = models.ForeignKey(
        User,
        verbose_name=_('Reviewer'),
    )

user = User(username='Mike')
user.save()

semester = Semester()
semester.save()

semester_reviewer = SemesterReviewer(
        semester=semester,
        reviewer=user,
    )

semester_reviewer.save()
semester_reviewer.delete()

reviewers = User.objects.filter(semesterreviewer__semester=semester)
print(reviewers)
[<User: Mike>]

Workaround :

reviewers = User.objects.filter(
    semesterreviewer__semester=semester,
    semesterreviewer__is_removed=False,
)
print(reviewers)
[]
foarsitter commented 3 years ago

Related: https://github.com/jazzband/django-model-utils/issues/364