擅长:python、mysql、java
<p>如果您打算在Django-Admin或<code>ModelForm</code>中使用它,则不需要将<code>ManyToManyField</code>子类化。参见<a href="https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.models.ManyToManyField.limit_choices_to" rel="nofollow">django documentation</a></p>
<pre><code>class SelfRefrencingModel(models.Model):
children = models.ManyToManyField('self', blank=True, symmetrical=False,
related_name='parents', limit_choices_to={'deleted': False}))
</code></pre>
<p><strong>注意:</strong>如果<code>deleted</code>是<code>BooleanField</code>,则必须是<code>True</code>或{<cd6>}。它不能是<code>None</code>/<code>NULL</code>。在</p>
<p><strong>beezz的</strong>使用代理模型的想法也是一个好主意。在</p>
我有时会定制默认管理器
^{pr2}$
<p>默认情况下,<code>deleted</code>对象将被隐藏,但如果在查询集中需要它们,可以使用<code>_objects</code>。在</p>