我正在使用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):
时,一切都相反;我的模板工作正常,但我无法在我的管理员中订购字段(“位置”号码更改,但没有别的,它仍然按原始顺序列出项目。
所以,我想知道是否有人知道是否有可能让这两件事情一起工作,或者我只是需要尝试寻找其他方式......
谢谢!