使用foreignKeys的Modelform Querysets

时间:2017-03-23 09:04:13

标签: django django-models django-forms

在将数据添加到数据库中时,我对如何最好地生成表单提出了挑战。     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)

1 个答案:

答案 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)