在将数据添加到数据库中时,我对如何最好地生成表单提出了挑战。 model.py
class Category(models.Model):
title = models.CharField(max_length...)
class Department(models.Model):
categories = models.ForeignKey(Category)
class ProductDivisions(models.Model):
departments = models.ForeignKey(Department)
class Product(models.Model):
division = models.ForeignKey(ProductDivisions)
title = models.CharField(max_length...)
和我的FORMS.py
from .models import Category, Department, ProductDivisions
class ProductForm(forms.Form):
category = forms.ModelChoiceField(widget=forms.Select(), empty_label=None, queryset=Category.objects.all
department = forms.ModelChoiceField(widget=forms.Select(), empty_label=None, queryset=Department.objects.all())
productDivisions = forms.ModelChoiceField(widget=forms.Select(), empty_label=None, queryset=ProductDivisions.objects.all())
def __init__(self,categories_id,*args,**kwargs):
super (ProductForm,self ).__init__(*args,**kwargs)
self.fields['department'].queryset = Department.objects.all()
self.fields['productdivisions'].queryset = ProductDivisions.objects.all()
所以,当我选择类别做得很好但部门'下拉列表显示所有部门,包括来自不同类别的部门,同样适用于ProductDivisions'下拉列表,显示所有这些内容,包括来自不同部门的内容。
帮助我提出如何使其正确的建议,以便我部门下拉列表仅显示特定类别的下拉列表,并使ProductDivisions下拉列表显示来自特定部门的下拉列表, 如果问题出在DB上,欢迎提出建议
更新:我还在def init ()函数中尝试了此,并且部门和productdivisions下拉列表中完全没有显示
def __init__(self,categories_id,dept_id*args,**kwargs):
super (ProductForm,self ).__init__(*args,**kwargs)
self.fields['department'].queryset = Department.objects.filter(id=categories_id)
self.fields['productdivisions'].queryset = ProductDivisions.objects.filter(id=dept_id)
答案 0 :(得分:0)
你正在取得所有部门..你应该做这样的事情。
def __init__(self,categories_id,*args,**kwargs):
super (ProductForm,self ).__init__(*args,**kwargs)
self.fields['department'].queryset = Department.objects.filter(categories=category_you_want_show)