擅长:python、mysql、java
<p>您可以而且仍然应该使用ModelChoiceField。选项列表可以在form类的<strong>init</strong>方法中修改,即</p>
<pre><code>class ClassifiedForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ClassifiedForm, self).__init__(*args, **kwargs)
# Set the queryset for validation purposes.
# May not be necessary if categoryTree contains all categories
self.fields['category'].queryset = Category.objects.categoryTreeObjects()
# Set the choices
self.fields['category'].choices = Category.objects.categoryTree()
</code></pre>
<p>另外,您应该仔细查看<a href="http://django-mptt.github.com/django-mptt/" rel="nofollow">django-mptt</a>包。看来你是在重新发明轮子。在</p>