Django-仅在模型中输入部分Foreignkey
我是django的新手,作为练习,我想做“家庭开支”。 我已经做了简单的模型和表格: (来自模型) 但现在我想添加另一个模型,它将更具体地描述与我的汽车相关的费用。所以我添加了另一个id=3的TypWydatku-Moto 下一步是创建具有额外字段(里程/油箱)的新模型: 我有最简单的表格,就像人们现在可以拥有的一样:Django-仅在模型中输入部分Foreignkey,django,forms,filter,model,foreign-keys,Django,Forms,Filter,Model,Foreign Keys,我是django的新手,作为练习,我想做“家庭开支”。 我已经做了简单的模型和表格: (来自模型) 但现在我想添加另一个模型,它将更具体地描述与我的汽车相关的费用。所以我添加了另一个id=3的TypWydatku-Moto 下一步是创建具有额外字段(里程/油箱)的新模型: 我有最简单的表格,就像人们现在可以拥有的一样: # forms.py class TypWydatkuForm(ModelForm): class Meta: model = TypWydatku
# forms.py
class TypWydatkuForm(ModelForm):
class Meta:
model = TypWydatku
fields = '__all__'
class WpisyForm(ModelForm):
class Meta:
model = Wpisy
fields = '__all__'
class WpisyMotoForm(ModelForm):
class Meta:
model = WpisyMoto
fields = '__all__'
我希望在模板中有选择字段“wpi”,在这里我只想看到那些“typ_wydatku”=3的字段。如何操作?对于ModelChoiceField字段(Django将使用该表单字段类型来表示ForeignKey字段),可以通过设置表单字段的queryset属性来实现:
class WpisyMotoForm(ModelForm):
class Meta:
model = WpisyMoto
fields = '__all__'
def __init__(self, *args, **kwargs):
super(WpisyMotoForm, self).__init__(*args, **kwargs)
self.fields["wpis"].queryset = Wpisy.objects.filter(typ_wydatku__pk=3)
很好!需要双下划线,因为typ_wydatku也是TypWydatku模型的外键?是的,有关它的更多详细信息,请访问
# forms.py
class TypWydatkuForm(ModelForm):
class Meta:
model = TypWydatku
fields = '__all__'
class WpisyForm(ModelForm):
class Meta:
model = Wpisy
fields = '__all__'
class WpisyMotoForm(ModelForm):
class Meta:
model = WpisyMoto
fields = '__all__'
class WpisyMotoForm(ModelForm):
class Meta:
model = WpisyMoto
fields = '__all__'
def __init__(self, *args, **kwargs):
super(WpisyMotoForm, self).__init__(*args, **kwargs)
self.fields["wpis"].queryset = Wpisy.objects.filter(typ_wydatku__pk=3)