2013-05-08 1 views
0
나는 체인 선택 메뉴를 만들기 위해 노력하고

, 나는이 모델이 있습니다초보자 장고 스마트/체인 메뉴 문제

from django.db import models 

class Health_plan(models.Model): 
    name = models.CharField(max_length=15) 

class Doctors_list(models.Model): 
    name = models.CharField(max_length=30) 
    specialty = models.CharField(max_length=15) 
    health_plans = models.ManyToManyField(Health_plan, related_name="doctors") 
    location = models.CharField(max_length=15) 

    def __unicode__(self): 
     return self.name 

을 그리고 이것은 내 forms.py :

class SpecForm(ModelForm): 
    a = Doctors_list.objects.values_list('specialty', flat=True) 
    unique = [('---------------','---------------')] + [(i,i) for i in set(a)] 
    specialty = forms.ChoiceField(choices=unique) 
    class Meta: 
     model = Doctors_list 

class HealthForm(ModelForm): 
    hplan = ChainedForeignKey(
     Health_plan, 
     chained_field="specialty", 
     chained_model_field="specialty", 
     show_all=False, 
     auto_choose=True 
    ) 

urls.py :

from django.conf.urls import patterns, include, url 
from testApp.views import spec_form 
from testApp.views import health_form 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    # Examples: 
    url(r'^$', 'Medbook.views.home', name='home'), 
    # url(r'^Medbook/', include('Medbook.foo.urls')), 
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^hello/$', spec_form), 
    url(r'^hello/$', health_form), 
) 

및 내 views.py :

from django.shortcuts import render_to_response 
from testApp.forms import SpecForm 
from testApp.forms import HealthForm 

def spec_form (request): 
    if request.method == 'POST': 
     form = SpecForm(request.POST) 
     if form.is_valid(): 
      form.save() 
    else: 
     form = SpecForm() 
    return render_to_response('hello.html', {'form':form}) 

def health_form (request): 
    if request.method == 'POST': 
     form = HealthForm(request.POST) 
     if form.is_valid(): 
      form.save() 
    else: 
     form = SpecForm() 
    return render_to_response('hello.html', {'form':form}) 

나는 장고를 처음 사용하며이 까다로운 것으로 알고 있습니다. 사용자는 하나의 전문 분야를 선택해야하며 그 전문 분야를 다루는 health_plans가 나타나야합니다.

health_plans는 의사와 수 많은 관계가 있습니다. 사람이 전문 분야를 선택하면 대본 작성자는 해당 전문 분야에 속한 의사를 확인하고 의사가 보유한 모든 건강 보험을 회수해야합니다.

지금까지 내가 메뉴에 얻을 수있는 유일한 것은입니다 : 분명히, 내 코드가 아닌 내가 만든 희망 Health_plan object Health_plan object Health_plan object

.

어떤 도움을 친절이 연쇄 선택과는 아무 상관이 없으며, 여기에 대부분의 코드는 무관하다

+0

어떤 힌트? 읽을 구체적인 문서? – ClaudioA

답변

2

감사. 문제는 Doctors_list__unicode__ 메서드가있는 반면 Health_plan에는 없습니다. 그 모델에 대해서도 하나를 정의하십시오.

(또한 모델 이름에 대한 일반적인 스타일 CapWords 있음을 유의하십시오. DoctorsListHealthPlan 전자는 실제로 단 하나의 의사를 의미하지만, 그냥해야 있도록 Doctor.)

+0

해당 변경 사항으로 인해 메뉴에 건강 계획 이름이 표시되지만 체인으로 연결되지는 않습니다. 나는 전문 분야를 선택하지만 건강 계획 메뉴에서는 아무 일도 일어나지 않습니다! – ClaudioA