gpt4 book ai didi

Django:在管理多选中显示嵌套类别

转载 作者:行者123 更新时间:2023-12-01 02:53:05 25 4
gpt4 key购买 nike

我想找到一种获取类别和子类别的方法
以多选的形式显示在管理中。

喜欢:

parent 
----child1
----child2
parent2
----child3

我必须创建自定义字段还是已经有解决方案
大约?

编辑

该模型是:
class Category(models.Model):

def __unicode__(self):
return self.name_en

name = models.CharField(_('name'), max_length=255, null=True)
slug = models.SlugField(_('slug'), db_index=True, unique=True)
parent = models.ForeignKey('self', blank=True, null=True, related_name='child')
description = models.TextField(_('description'), null=True)

最佳答案

您不需要自定义字段,只需要自定义小部件。这是我编写的一个示例小部件。它未经测试,因此将其视为伪代码:)

from django.forms.widgets import SelectMultiple
from django.db.models import *

class Category(Model):
name = TextField()
parent = ForeignKey('self', null=True, related_name='children'):

class CategoryTreeWidget(SelectMultiple):
def render_options(self, choices, selected_choices):
selected_choices=set([force_unicode(v) for v in selected_choices])
top_level_cats = Category.objects.filter(parent=None)
def _render_category_list(cat_list, level=0):
for category in cat_list:
self.render_option(selected_choices, category.pk, (("---"*level + " ") if level) + category.name)
def _render_category_list(category.children, level+1)
_render_category_list(top_level_cats)

class Article(Model):
title = TextField()
body = TextField()
category = ManyToMany('Category', widget = CategoryTreeWidget)

关于Django:在管理多选中显示嵌套类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4182996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com