Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在表单中引用父表,无需用户输入_Django_Django Models_Django Forms - Fatal编程技术网

Django 在表单中引用父表,无需用户输入

Django 在表单中引用父表,无需用户输入,django,django-models,django-forms,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'] 我有一个html

我有两张桌子: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']
我有一个html页面显示一个地理位置列表,然后用户选择一个地理位置。一个页面会显示有关该地理位置的特定信息和船舶列表(子表/船舶)。如何引用Ship表单自动附加正确的地理外键而不在表单中显示

对不起,这里没有。 感谢您

ShipForm
中重写
save()
方法,并使用
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)