Django select2,在搜索父类别名称时显示子类别
我使用django-select2显示父类别和子类别。 当我使用“Select2MultipleWidget”(例如太平洋时区)搜索父类别的名称时,它不会显示其子类别。 在搜索父类别时是否可以显示所属的子类别 我正在阅读select2文档,但找不到相关选项Django select2,在搜索父类别名称时显示子类别,django,categories,django-select2,Django,Categories,Django Select2,我使用django-select2显示父类别和子类别。 当我使用“Select2MultipleWidget”(例如太平洋时区)搜索父类别的名称时,它不会显示其子类别。 在搜索父类别时是否可以显示所属的子类别 我正在阅读select2文档,但找不到相关选项 #models.py class Category(models.Model): name = models.CharField(max_length=200) class SubCategory(models.Model): ca
#models.py
class Category(models.Model):
name = models.CharField(max_length=200)
class SubCategory(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
name = models.CharField(max_length=180)
class Post(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="user")
title = models.CharField(max_length=200)
category = models.ManyToManyField(SubCategory)
desc = models.TextField()
#forms.py
class PostForm(forms.ModelForm):
def categories_as_choices():
categories = []
for category in Category.objects.all():
new_category = []
sub_categories = []
for sub_category in category.subcategory_set.all():
sub_categories.append([sub_category.id, sub_category.name])
new_category = [category.name, sub_categories]
categories.append(new_category)
return categories
category = forms.ChoiceField(
choices=categories_as_choices(),
widget = Select2MultipleWidget(
attrs={'class': 'form-control col-4'}
),
)
class Meta:
model = Post
fields = ['title', 'desc', 'category']
我尝试使用select2的时区和州名示例(太平洋时区作为父类别,加利福尼亚州作为子类别)。
当我键入“太平洋时区”时,它不会显示“加利福尼亚”子类别。我认为您必须设置此定义:
定义(自我):
... 返回自我。任何你想展示的东西
在你的models
class中,我实际上添加了“return self.name”,但当我键入父类别名称时,所属子类别不会显示。你是否在“class category(models.Model):name=models.CharField(max_length=200)”中使用它?我决定使用提供这种外观的selected.js。我还找到了答案,请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常质量更高,更容易吸引选票。
class Category( models.Model ):
Title = models.CharField( max_length=255, blank=True, null=Falsex)
Catparents = models.ForeignKey('self',limit_choices_to = {'Catparents__isnull': True}, on_delete=models.CASCADE,related_name="parents", default=1, blank=True, null=True)