Django 在表单中引用父表,无需用户输入
我有两张桌子:GEO和SHIP。船内有一把通往Geo的外国钥匙。 我有forms.py显示: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
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)