擅长:python、mysql、java
<p>这是我的解决方案。@beezz,使用代理模型来完成此操作可能是正确的,但在此模式中,我以前从未使用过代理模型,因此我解决此问题的方法如下:</p>
<pre><code>class SelfRefrencingQuerySet(models.query.QuerySet):
pass
class SelfRefrencingManager(BaseManager):
def get_queryset(self):
return SelfRefrencingQuerySet(self.model, self._db).filter(
deleted__isnull=True)
class SelfRefrencingBaseModel(models.Model):
children = models.ManyToManyField('self', blank=True, symmetrical=False,
related_name='parents')
# Manager
objects = SelfRefrencingManager()
objects_all = models.Manager() # So you still have acccess to the
# default Manager
</code></pre>