2012-01-11 9 views
0

...データ・リレーションシップ・モデルとDjango

私はので、私は私の帽子を身につけているジャンゴを学ぶために仕事で頼まれてきましたチュートリアルやそのような最後の数日間作業していました。しかし、私はいくつかの助けを借りて問題を抱えています。

私は、この基本的なデータモデルがあります:

TABLE1

データセット - ID、名前

table2の

subcatergory - ID、dataset_id、名前を

表3

サブカテゴリー値 - id、subcat_id、value

このように、1つのデータセットには多数のサブキャリアがあり、1つのサブキャリアには多くの値があります。私はそれをテストしていたときに私はd = Dataset.objects.all()を行う場合は、そのオブジェクトdはありません持っている(私は基本的には、ATMだけでいくつかのドロップボックスを埋めるために望んでいます)views.pyで

class Dataset(models.Model): 
    name = models.CharField(max_length=150) 
    def __unicode__(self): 
     return self.name 

class SubCat(models.Model): 
    dataset = models.ForeignKey(Dataset) 
    name = models.CharField(max_length=100) 
    def __unicode__(self): 
     return self.name 

class SubCatVal(models.Model): 
    subcat = models.ForeignKey(SubCat) 
    value = models.CharField(max_length=100) 

:ジャンゴで

私はこれを持っていますサブカレゴリーの知識?

ので、私はそれをすべてを望んでいた場合、私は何をする必要があります:

d = Dataset.objects.all(); 
s = SubCat.objects.all(); 
sv = SubCatVal.objects.all(); 

は、HTMLで

{% for d in dataset %} 
    {% for s in subcat %} 
     {% if s.dataset_id == d.id %} 
      //add {{s.name}} to a select box 
     {% endif %} 
    {% endfor %} 
{% endfor %} 

のようなものは、これはこれを行う方法であるのですか?または私は完全にトリックを逃していますか?

おかげ

+0

"カテゴリ"、 "catergory"ではありません – eternicode

答えて

3

関連するオブジェクトを取得上のドキュメントをチェックアウト:

要するに

https://docs.djangoproject.com/en/dev/ref/models/relations/ https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward

:はい、それはのようなものになるでしょう:&を格納する方法のため

# in view, passed to template 
datasets = Dateset.objects.all() 
# template 
{% for d in datasets %} 
    {% for s in d.subcat_set.all %} 
     <option value="{{ s.id }}">{{ s.name }}</option> 
    {% endfor %} 
{% endfor %} 
4

あなたはdObjectオブジェクトのサブカテゴリのすべてを一覧表示されますされ、dObject.subcat_set.all()でデータセットから外部キーを参照することができます。同様に、subcatObject.subcatval_set.all()ですべてのSubCatValuesを取得できます。しかし、これはちょっとしたことですが、FormまたはModelFormオブジェクトを使用してプログラムでフォームを作成し、HTMLで手動で書かないようにする必要があります。

+0

djangoの[外部キー値へのアクセス]セクション(http://www.djangobook.com/en/2.0/chapter10/#cn7)は、これに関する詳細情報。 – jcollado

+0

@jknupp - 私はフォームオブジェクトの使用について理解していますが、そのようなファンキーな派遣の問題の^^ – Vade

-1

Related objects referenceを読みます関連するオブジェクトを検索する。

+0

"1つのデータセットに複数のサブカテゴリを持たせることができ、1つのサブカテゴリには多くの値を持たせることができます。これはそれを後方に向ける。 – eternicode

+0

はい!これはdjango ORMで行われる方法であり、それはあなたに魔法の質問オプションを設定します。 – tikider

+1

いいえ、そうではありません。あなたのコードでは、データセットごとに1つのサブキャットと、サブキャットごとにサブキャットを許可します。 – AdamKG

関連する問題