0

我使用 django-select2 来显示父类别和子类别。当我使用“Select2MultipleWidget”(例如太平洋时区)搜索父类别的名称时,它不会显示其子类别。搜索父类别时是否可以显示所属子类别?

我正在阅读 select2 文档,但找不到相关选项。

#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 的时区和州名示例(太平洋时区作为父类别,加利福尼亚作为子类别)。当我输入“太平洋时区”时,它不会显示“加利福尼亚”,子类别。

4

2 回答 2

0
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)
于 2020-04-10T08:55:09.340 回答
0

我认为你必须设置这个定义: def__str__(self): ... return self.any_thing_you_want_to_show 在你的models课堂上

于 2019-10-13T08:07:49.850 回答