我试图在 Django 环境中使用 mptt 库创建类别和子类别。 mptt lib 安装成功。在 model.py(file) 中创建的 Category(name) 模型。在 Admin.py mptt 中。 MPTT- 类别树子类别未显示在 admin.py 面板中使用以下代码创建的任何类别 MPTTAdmin --> 它不显示任何 list_display 以及类别和子类别值,如下面的附图所示。
[管理员中的类别][1]
它显示了 10 个类别而不是子类别 [1]:https://i.stack.imgur.com/2GtfA.png
# Register your models here.
from product.models import Category,Product,Images
from mptt.admin import DraggableMPTTAdmin
class CategoryAdmin(admin.ModelAdmin):
list_display = ['title','parent', 'status']
list_filter = ['status']
#mptt
class CategoryAdmin2(DraggableMPTTAdmin):
mptt_indent_field = "title"
list_display = ('tree_actions', 'indented_title',
'related_products_count', 'related_products_cumulative_count')
list_display_links = ('indented_title',)
def get_queryset(self, request):
qs = super().get_queryset(request)
# Add cumulative product count
qs = Category.objects.add_related_count(
qs,
Product,
'category',
'products_cumulative_count',
cumulative=True)
# Add non cumulative product count
qs = Category.objects.add_related_count(qs,
Product,
'category',
'products_count',
cumulative=False)
return qs
def related_products_count(self, instance):
return instance.products_count
related_products_count.short_description = 'Related products (for this specific category)'
def related_products_cumulative_count(self, instance):
return instance.products_cumulative_count
related_products_cumulative_count.short_description = 'Related products (in tree)'
#product pictures
class ProductImageInline(admin.TabularInline):
model = Images
extra = 5
#5 similar pictures
class ProductAdmin(admin.ModelAdmin):
list_display = ['title','category', 'status']
list_filter = ['category']
# readonly_fields = ('image_tag',)
inlines = [ProductImageInline]
admin.site.register(Category,CategoryAdmin2)
admin.site.register(Product,ProductAdmin)
admin.site.register(Images)
models.py 文件
class Category(MPTTModel):
STATUS = (
('True', 'True'),
('False', 'False'),
)
#parent = TreeForeignKey('self',blank=True, null=True ,related_name='children', on_delete=models.CASCADE)
parent = TreeForeignKey('self',blank=True, null=True ,related_name='children', on_delete=models.CASCADE)
title = models.CharField(max_length=50)
keywords = models.CharField(max_length=255)
description = models.TextField(max_length=255)
image=models.ImageField(blank=True,upload_to='images/')
status=models.CharField(max_length=10, choices=STATUS)
slug = models.SlugField(null=False, unique=True)
create_at=models.DateTimeField(auto_now_add=True)
update_at=models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
class MPTTMeta:
order_insertion_by = ['title']