【发布时间】:2019-08-15 07:00:57
【问题描述】:
我需要根据传递到单个公司表单中的数据在下拉列表中创建一个案例列表。
我将 id 传递到表单中,但如何在 CaseChoiceField 查询中使用它?
仅在查询中使用 id 或 self.id 是行不通的。
视图中的第一个:
form = NewProjectCaseForm ( id = f.id )
模型形式:
class NewProjectCaseForm ( forms.Form ):
# get all the cases for the firm
# how do I get the ID from below ???
case = CaseChoiceField ( queryset = Case.objects.filter (firm_id = id ) )
def __init__ ( self, *args, **kwargs ):
# id from the view
self.id = kwargs.pop ( 'id' )
super ( NewProjectCaseForm, self ).__init__ ( *args, **kwargs )
self.helper = FormHelper ()
self.helper.layout = Layout (
Div (
Div ( 'case', css_class = 'large-10 cell' ),
css_class = 'grid-x'
),
ButtonHolder (
Submit ( 'submit', 'Add Case', css_class = 'button small-6' )
)
)
创建下拉菜单我使用这个:
class CaseChoiceField ( ModelChoiceField ):
def label_from_instance ( self, obj ):
return '{} - {}'.format ( obj.name, obj.firm )
我正在使用 Crispy 表单(用于 Foundation)
我希望这是有道理的。
非常感谢。
【问题讨论】: