나는이 모델이 저장 될 때없는 필드 값을 대입하면 :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',)
내가 템플릿이 양식을 사용, "회사"필드가 추가되지 않아 예상됩니다. 그러나 해당 필드는 공백으로 필요합니다! = True.
이 양식을 사용하는 방식으로 회사 특성은 URL에서 전달되므로보기 기능에서 항상 알 수 있습니다. 저장하기 전에 어떻게 뷰 기능에서 폼에 회사를 추가 할 수 있습니까?
누락,하지만 필수 필드의 초기 값으로 모델을 인스턴스화 :
company = Company.objects.get(pk=company_id)
fleet = Fleet(company=company)
form = FleetForm(request.POST, instance=fleet)
new_fleet = form.save()
이 문제를 해결하는 방법은 두 가지가 있습니다
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