﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
25685	Model.delete() issues extra queries after a deferred queryset	Pantelis Petridis	Simon Charette	"Consider the following models

{{{
from django.db import models

class ModelA(models.Model):
        a = models.CharField(max_length=15)

class ModelB(models.Model):
        fk = models.ForeignKey(ModelA)

}}}

and the following test

{{{
from django.test import TestCase
from .models import ModelA

class DeferProblemTestCase(TestCase):
        def test_defer(self):
                a = ModelA.objects.create(a='test')
                with self.assertNumQueries(2):
                        a.delete()

                unrelated_qs = list(ModelA.objects.defer('a'))

                # let's try once again
                a = ModelA.objects.create(a='test')
                with self.assertNumQueries(2):
                        a.delete()

}}}

The above test fails under django 1.8.6, as the second call to `.delete()` will produce 3 queries instead of 2.  It seems django somehow caches the deferred model and tries to delete any related  ModelB records twice. Except from the overhead, this can lead to random test fails based on the execution order.
"	Bug	closed	Database layer (models, ORM)	1.8	Release blocker	fixed			Ready for checkin	1	0	0	0	0	0
