2013-05-08 52 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