1

我正在使用 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):一切都变了;我的模板工作正常,但我无法在我的管理员中订购字段(“位置”编号更改,但没有别的,它仍然按原始顺序列出项目。

所以,我想知道是否有人知道是否有可能让这两个东西一起工作,还是我只需要尝试找到另一种方法......

谢谢!

4

0 回答 0