2011-12-23 8 views
0

クラスオブジェクトが属性としてDjangoモデルに添付されています。Djangoモデルにアタッチされた属性は、指定されたレコードに関する情報を取得できますか?

class Foo(object): 
    def bar(self): 
     print "Does things here" 

class Task(models.Model): 
    name = models.CharField(max_length=30) 
    user = models.ForeignKey(User, related_name = 'tasks' 

    foo = Foo() 

私がfoo属性から特定のレコードの値にアクセスすることが可能です:質問の目的のために、のは、それはのようになりますと仮定しましょうか?私のようなもの持っているのであれば、例えば、:ことを知っているであろう

newest_task.foo.spiffy() 

そしてspiffy機能:

task = Task(name="Get things done", user=JordanReiter) 
newest_task = Task.objects.filter(user=JordanReiter).order_by('-pk')[0] 

をそれから私はので、私のようなものを実行することができFooクラスにいくつかの機能spiffyを持つことができますこの場合、名前の値が「物事を成し遂げる」された、など

基本的に私は属性がそれらを呼び出す場合、またはそれらを呼び出すだけで、クラスに関する情報を知ることができるかどうか迷っています。もちろん、これが可能であれば、インスタンスの値にどのようにアクセスすればよいでしょうか?

完全な世界では、foo属性はTaskクラスとnewest_taskインスタンスに関する情報にアクセスできます。

答えて

1

descriptorのように聞こえるかもしれません。それらは取得または設定時に呼び出され、親インスタンスを渡される特別なメソッドを実装するクラスです。

+0

アクティブな記述子を示す良いソースコードがありますか?ほとんどの例では、「私は値を設定しました!」 "私は価値がある"という方法はあまり有益ではない。 –

0

Foocustom managerとすると、本来Taskが分かるようになります。

+0

Fooはマネージャではなく、マネージャの機能に関与していないことを除いて。 –

関連する問題