没有用户输入的表单中的引用父表

时间:2014-12-19 04:03:02

标签: django django-models django-forms

我有两张桌子:GEO和SHIP。船内有一把外国钥匙给Geo。 我有forms.py显示:

class Geo(forms.ModelForm):

    class Meta:
        model = Geo
        exclude = []


class Ship(forms.ModelForm):

    class Meta:
        model = Ship
        exclude = ['ShipClass', 'Geo']

我有一个显示GEO列表的html页面,然后使用选择Geo。页面提供有关该GEO的特定信息以及船舶清单(子表/船)。我如何参考Ship表单自动附加正确的GEO外键而不在表单中显示?

对不起...... Noob在这里。 感谢

1 个答案:

答案 0 :(得分:0)

覆盖save()中的ShipForm方法,并使用geo参数从您的视图中调用它:

class ShipForm(forms.ModelForm):

    class Meta:
        model = Ship
        exclude = ['ShipClass', 'Geo']

    def save(self, geo):
        ship = super(ShipForm, self).save(commit=False)
        ship.geo = geo
        ship.save()
        return ship

或者您可以在视图中使用commit=False执行相同的操作: - )

if form.is_valid():
    ship = form.save(commit=False)
    ship.geo = geo
    ship.save()
    return redirect(ship)