我有一个与另一个对象(类别)具有多对多关系的对象(书)。
'Category' 也用于渲染子类别。类别和子类别之间的区别在于类别具有“category_parent=None”,而子类别具有类别作为父类别。
--models.py--
class Category(models.Model):
name = models.CharField(max_length=150, blank=True, null=True)
category_parent = models.ForeignKey("Categoria", blank=True, null=True)
class Book(models.Model):
title = models.CharField("Title",max_length=150)
category = models.ManyToManyField("Category", blank=True, null=True)
我想显示一个带有两个 ChoiceFields 的表单作为多项选择。一个用于仅显示类别的类别,另一个用于先前所选类别的子类别。
我不知道如何过滤上面选择的类别中可用的子类别。那可能吗?
到目前为止,我只能过滤不包括类别的子类别(category_parent=None),但我无法按已选择的类别对其进行过滤。
--forms.py--
class CatSubcatForm(forms.Form):
category = forms.ModelChoiceField(Category.objects.filter(category_parent=None))
subcategory = forms.ModelChoiceField(Category.objects.exclude(category_parent = None))