Django实现3级分类,并可以通过后台更改分类名称
时间: 2024-01-09 19:03:48 浏览: 47
实现3级分类可以通过Django的模型实现,例如:
```python
class Category(models.Model):
name = models.CharField(max_length=100)
parent = models.ForeignKey('self', null=True, blank=True, related_name='children', on_delete=models.CASCADE)
def __str__(self):
return self.name
```
这里通过一个外键关联自身来实现多级分类,其中parent为父级分类,related_name用来指定反向查询的名称。
如果要通过后台更改分类名称,可以在后台管理界面中注册该模型,并自定义该模型的表单,例如:
```python
from django import forms
from django.contrib import admin
from .models import Category
class CategoryForm(forms.ModelForm):
class Meta:
model = Category
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['parent'].queryset = Category.objects.exclude(pk=self.instance.pk)
class CategoryAdmin(admin.ModelAdmin):
form = CategoryForm
admin.site.register(Category, CategoryAdmin)
```
这里通过自定义表单类来重写默认的表单,通过exclude方法来排除当前编辑的分类,避免将自身作为父级分类。然后在模型管理类中注册该表单类,即可在后台管理界面中使用该表单。
在后台管理界面中,我们可以通过点击分类名称进入编辑界面,然后修改名称和父级分类等信息。同时,由于使用了自定义表单,我们可以通过下拉菜单选择父级分类,更加方便地进行分类管理。