2012-02-18 17 views
1

私はお互いに独立した2つのクラスを持っていますが、どちらもForeignKeyを使ってUser(django)クラスに関連しています。だから私の質問は、どのように地球上でUserオブジェクトを介して、Userに関連するものを見つけるのですか?Userクラス(Django)でForeignKeyにアクセス

今私の見解では、私はクラスB

B.objects.all() 

のために、私のテンプレート内のすべての値を引っ張っ

class A(models.Model): 
    item = models.ForeignKey(User) 

class B(models.Model): 
    box = models.ForeignKey(User) 

HERESに例私はこの

{% for value in B %} 
    {{ value.B.User.item }} 
{% endfor %} 
ようにアクセスしようとしていました

しかし、それは動作しません..私はどのようにユーザークラスを介してクラスAにアクセスできますか?

答えて

0

私の頭の上から覚えていれば、外部キーはアクセス時に自動的に横断されるので、itemがユーザーテーブルの列であると仮定すると、value.box.itemとなるはずです。

ユーザーからAになるためには、thisが好きで、構文はsome_user.a_set.all()のようにする必要があります。注a_setは実際には<model_name>_setであり、定義された外部キーの関係がsome_userから<model_name>まである場合にのみ機能します。

UPDATE:

あなたはDjangosモデルに関するいくつかの誤解があるようです。 some_B_object.boxはUser型のオブジェクトになります。だから、私がBからAに行くのが上にあれば、value.box.a_set.all()をやることができるはずです。

+0

残念ながら、itemは私のuserテーブルのカラムではありません。なぜ私が何をすべきかに固執しています。私はuserテーブルを通してリンクされた2つのクラスを持っています。だからB - > USER < - A、理論的には私はBからAにアクセスできるはずです...そうですか? – asaji

+0

@asaji編集 – Endophage

+0

は、その構文がテンプレート内で直接動作するかどうかを確認しますか? – asaji

0

それを行うための適切な方法を使用すると、ユーザーオブジェクトを持っているなら、あなたができるように

class Item(models.Model): 
    user = models.ForeignKey('auth.User', related_name='items') 

class Box(models.Model): 
    user = models.ForeignKey('auth.User', related_name='boxes') 

として、あなたのモデルでrelated_nameを持つことである

user.items.all() 

または

user.boxes.all() 

アイテムが1つのボックスにしか関連しない場合は、Item.userフィールドをItem.box外部キーに置き換えます。

関連する問題