2013-05-08 31 views
0

我試圖做一個鏈接的選擇菜單,我有這個模型:新手Django的智能/鏈接菜單的麻煩

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), 
) 

and my 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}) 

我是Django的新手,我覺得這很棘手。用戶必須選擇一個專業,然後出現涵蓋該專業的health_plans。

health_plans與醫生有許多關係。當一個人選擇一個專業時,腳本應該檢查哪個醫生屬於該專業,並檢索這些醫生持有的所有健康計劃。

到目前爲止,我在菜單中唯一得到的是:Health_plan object Health_plan object Health_plan object

我希望我清楚,我的代碼,它不是。

任何幫助,懇請讚賞

+0

任何提示?具體文檔閱讀? – ClaudioA 2013-05-08 20:07:08

回答

2

這有什麼好做鏈接的選擇,並且這裏的大部分代碼是無關緊要的。問題是,儘管Doctors_list有一個__unicode__方法,但Health_plan沒有。也爲該模型定義一個。

(另請注意,通常的樣式型號名稱是CapWords:DoctorsListHealthPlan雖然前者實際上只指的是單個醫生,所以它應該只是Doctor。)

+0

有了這個改變,我得到了菜單上的健康計劃名稱,但沒有鏈接選擇。我選擇一個專業,但在健康計劃菜單中沒有任何反應! – ClaudioA 2013-05-08 20:53:20