我正在使用 Grappelli 管理员,因为它具有出色的可排序字段功能。但是,我似乎无法让它与 mptt 一起使用。这是我的代码:
class Category(models.Model):
name = models.CharField(max_length = 100)
def __unicode__(self):
return self.name
class Item(models.Model):
category = models.ForeignKey(category)
title = models.CharField(max_length=50)
parent = models.ForeignKey('self',null=True, blank=True,related_name='subitems')
position = models.PositiveSmallIntegerField("Position")
class Meta:
ordering = ['position']
def __unicode__(self):
return self.title
这是我的管理员:
from content.models import *
from django.contrib import admin
class ItemInline(admin.TabularInline):
model = Item
fields = ('title', 'parent', 'position')
sortable_field_name = "position"
class CategoryAdmin(admin.ModelAdmin):
model = Category
inlines = (ItemInline, )
admin.site.register(Category, CategoryAdmin)
最后这是我的模板:
<ul>
{% recursetree nodes %}
<li>
{{ node.title }}
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
问题是,如果我class Item(models.Model):
在我的模型中使用管理功能就好了,可排序和所有,但我的模板失败了,说
类型对象“MenuItems”没有属性“_mptt_meta”
当我使用所有东西时,class MenuItems(MPTTModel):
一切都变了;我的模板工作正常,但我无法在我的管理员中订购字段(“位置”编号更改,但没有别的,它仍然按原始顺序列出项目。
所以,我想知道是否有人知道是否有可能让这两个东西一起工作,还是我只需要尝试找到另一种方法......
谢谢!