私はこのモデル持って保存するときに不在のフィールド値を代入:のModelForm
class Fleet(models.Model):
company = models.ForeignKey("Company", editable=False)
aircraft = models.ForeignKey("Aircraft")
size = models.IntegerField(default=1)
description = models.TextField(blank=True)
def __unicode__(self):
return u"%s" % (self.aircraft,)
そして、このモデルに基づいてフォームを:
class FleetForm(ModelForm):
class Meta:
model = Fleet
exclude = ('company',)
私はテンプレートでこのフォームを使用し、 「会社」フィールドは追加されません。しかし、そのフィールドは空白として必須です!=真。
私がこのフォームを使用する方法は、URLから渡されるので、会社の属性は常にビューの機能で知られています。私はそれを保存する前に、ビュー機能でフォームに会社を追加する方法はありますか?ここで
が私の見解です:
def new_fleet(request, company_id):
from forms import FleetForm
company = Company.objects.get(pk=company_id)
if request.method == "POST":
form = FleetForm(request.POST,)
form.company = company #doesn't work
form = form.save(commit=False) #can't do this because the form
form.company = company #doesn't validate (company is not set)
if not form.errors:
form.save()
else:
fleet = Fleet(company=company) #pointless because the company widget
form = FleetForm(instance=fleet) #isn't created but eh whatever