我有一个类对象作为属性附加到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属性访问特定记录的值吗?所以,例如,如果我有类似的东西:
task = Task(name="Get things done", user=JordanReiter)
newest_task = Task.objects.filter(user=JordanReiter).order_by('-pk')[0]
然后我可以在spiffy
类上有一些函数Foo
,所以我可以运行类似的东西:
newest_task.foo.spiffy()
spiffy
函数会知道在这种情况下,name的值是“Get things done”等。
基本上我想知道属性是否可以知道有关调用它们的实例的信息,或者只知道调用它们的类。当然,如果可以,我该如何访问实例的值?
在完美的世界中,foo
属性可以访问有关Task
类以及newest_task
实例的信息。
答案 0 :(得分:1)
听起来你可能需要descriptor。它们是实现在获取或设置时调用的特殊方法的类,并传递给父实例。
答案 1 :(得分:0)
您可以使Foo
成为custom manager,以便它本身知道Task
。