2012-04-10 16 views
0

私はDJangoを新しくしました。Django子テーブルの外部キーを扱う方法

> -CRP 
> - SubComponents of a CRP 
>  - Objectives of a SubComponent of a CRP. 

I次のモデルがあります:私は3つのテーブルを持つデータベースを持っている

class period(models.Model): 
    period_code = models.IntegerField(primary_key=True,verbose_name='Period code') 
    period_desc = models.CharField(max_length=45,verbose_name='Period description') 
    period_current = models.IntegerField(verbose_name='Current period') 
    def __unicode__(self): 
     return self.period_desc 
    class Meta: 
     db_table = 'period' 

class crp(models.Model): 
    crp_code = models.CharField(max_length=3,primary_key=True,verbose_name='CRP code') 
    crp_desc = models.CharField(max_length=45,verbose_name='CRP description') 
    def __unicode__(self): 
     return self.crp_desc 
    class Meta: 
     db_table = 'crp' 

class subcomponent(models.Model): 
    crp_code = models.ForeignKey(crp,db_column='crp_code',related_name='subcomponent_crp_code',to_field='crp_code',primary_key=True,verbose_name='CRP code') 
    subc_code = models.CharField(max_length=3,primary_key=True,verbose_name='SubComponent Code') 
    subc_desc = models.CharField(max_length=45,verbose_name='SubComponent Description') 
    def __unicode__(self): 
     return self.subc_desc 
    class Meta: 
     db_table = 'subcomponent' 

class objective(models.Model): 
    crp_code = models.ForeignKey(subcomponent,db_column='crp_code',related_name='objective_crp_code',to_field='crp_code',primary_key=True,verbose_name='CRP code') 
    subc_code = models.ForeignKey(subcomponent,db_column='subc_code',related_name='objective_subc_code',to_field='subc_code',primary_key=True,verbose_name='SubComponent Code') 
    obj_year = models.ForeignKey(period,db_column='obj_year',related_name='objective_obj_year',to_field='period_code',primary_key=True,verbose_name='Objective year') 
    obj_code = models.CharField(max_length=7,primary_key=True,verbose_name='Objective code') 
    obj_desc = models.CharField(max_length=45,verbose_name='Objective description') 
    def __unicode__(self): 
     return self.obj_desc 
    class Meta: 
     db_table = 'objective' 

すべてが "サブコンポーネント" モデル(CRP参照)のために正常に動作します。 「サブコンポーネント」の管理では、ユーザーはCRPをプルダウンしてサブコンポーネントを追加することができます。

ただし、モデル "objective"はモデル "サブコンポーネント"を参照します。 "客観的"の管理では、ユーザーがCRPをプルダウンして選択し、そのCRPのサブコンポーネントをプルダウンリストでフィルタリングしたいと思います。これどうやってするの?

多くのありがとう、 カルロス。

+0

あなたはajaxまたは複数のステップ形式を使用する必要があります。ドロップダウンリストで項目を選択するなどのHTMLアクションから、サーバーとのデータ交換は行われません。 –

答えて

0
+0

答えをありがとう。スマートセレクトが問題を解決できるようです。しかし、それは "_id"を私のキーに連結しているので、エラーが発生します...悲しいことに、そのサポートは非​​常に貧弱です。 – QLands

+0

それは数週間前に私のために完璧に働いた。あなたのモデルでは 'db_column'のためでしょうか? – ilvar

関連する問題