Django-仅在模型中输入部分Foreignkey

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

我是django的新手,作为练习,我想做“家庭开支”。 我已经做了简单的模型和表格: (来自模型)

但现在我想添加另一个模型,它将更具体地描述与我的汽车相关的费用。所以我添加了另一个id=3的TypWydatku-Moto

下一步是创建具有额外字段(里程/油箱)的新模型:

我有最简单的表格,就像人们现在可以拥有的一样:

# 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)