尝试将父字段的id添加到表单中的子外键字段。 用户有一个位置列表。从该位置,他们可以添加对该位置的评估。而不是评估表给我一个所有位置的列表,我希望它自动选择正确的
urls.py
url(r'^accounts/loggedin/locations/all/$', 'assessments.views.locations'),
url(r'^locations/get/(?P<location_id>\d+)/$', 'assessments.views.location'),
url(r'^accounts/loggedin/locations/create/$', 'assessments.views.create'),
url(r'^locations/get/(?P<location_id>\d+)/add_assessment/$', 'assessments.views.create_assessment'),
models.py
class Location(models.Model):
address = models.CharField()
def __unicode__(self):
return u'%s' % self.address
class Assessment(models.Model):
location = models.ForeignKey(Location)
title = models.CharField()
def __unicode__(self):
return u'%s' % self.location
views.py
def create_assessment(request, location_id):
location = Location.objects.get(pk=location_id)
if request.POST:
form = AssessmentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/loggedin/assessments/all/')
else:
form = AssessmentForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('assessment/create_assessment.html', args,)
forms.py
class LocationForm(forms.ModelForm):
class Meta:
model = Location
class AssessmentForm(forms.ModelForm):
class Meta:
model = Assessment
答案 0 :(得分:0)
您可以使用评估实例初始化表单。请参阅https://docs.djangoproject.com/en/1.7/topics/forms/modelforms/#modelform。
assessment = Assessment(location=location)
form = AssessmentForm(request.POST, request.FILES, instance=assessment)
然后,当然,您应该从AssessmentForm
删除位置字段。
答案 1 :(得分:0)
您的视图包含需要显示评估的位置信息。 您可以通过在呈现表单之前设置位置值来将位置字段添加为自动选择。
location = Location.objects.get(pk=location_id)
form.location = location
如果您需要位置字段不可编辑,请按this link