作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个对象 (Book) 与另一个对象 (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))
最佳答案
您可以使用表单初始化方法来填充子类别选择相应的类别:
表单.py
class CatSubcatForm(forms.Form):
category = forms.ModelChoiceField(Category.objects.filter(category_parent=None))
subcategory = forms.ModelChoiceField(queryset=Category.objects.none(), required=False)
def __init__(self, parent_category_id, *args, **kwargs):
super(CatSubcatForm, self).__init__(*args, **kwargs)
self.fields['subcategory'].queryset = Category.objects.filter(pk=parent_category_id)
View .py
cat_subcat_form = CatSubcatForm(parent_category_id)
用户选择父分类后,你必须通过ajax请求将父分类id传递给form init方法,你只会得到相应的子分类
关于django - 过滤多对多多选字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4527302/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!