Django select2, показывать подкатегории при поиске имени родительской категории - PullRequest
0 голосов
/ 12 октября 2019

Я использовал 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часовой пояс и название штата (Тихоокеанский часовой пояс в качестве родительской категории с Калифорнией в качестве подкатегории). Когда я набираю «Тихоокеанский часовой пояс», он не отображает «Калифорния», подкатегория.

1 Ответ

0 голосов
/ 13 октября 2019

я думаю, что вы должны установить это значение: def__str__(self): ... return self.any_thing_you_want_to_show в вас models класс

...