2014-09-18 2 views
0

내 양식의 하위 외래 키 필드에 상위 필드의 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

보기에는 평가가 표시되어야하는 위치에 대한 정보가 있습니다. 양식을 렌더링하기 전에 위치 값을 설정하여 위치 필드를 자동 선택으로 추가 할 수 있습니다. 당신이 편집 할 수있는 위치 필드를 필요로하는 경우

location = Location.objects.get(pk=location_id) 
form.location = location 

, 내가 양식을 게시 할 때 404 오류가 발생하고 this link

+0

을 따르십시오. 템플릿에 넣은 것을 열거합니다.

user3972986

+0

@ user3972986 오류가 발생했는지 설명해 주시겠습니까? 변수 Location이 인스턴스가 아닌 클래스 인'{{Location.location_id}} '를 사용하고있을 수 있습니다. 'location' 변수를 사용해보십시오. – srj

+0

도 하드 코딩 된 URL을 사용하지 않는 것이 가장 좋습니다. 대신 양식에 django의 url 태그를 사용할 수 있습니다. 을 사용하면 모든 템플릿 코드에서 실수하지 않고도 API URL을 쉽게 변경할 수 있습니다. – srj