附加到Django模型的属性能否获得有关给定记录的信息?

2024-05-16 10:05:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类对象作为属性附加到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]

然后我可以在Foo类上有一些函数spiffy,这样我就可以运行如下操作:

newest_task.foo.spiffy()

spiffy函数将知道在本例中name的值是“Get things done”,等等

基本上,我想知道属性是否可以知道有关调用它们的实例的信息,或者只知道调用它们的类的信息。当然,如果这是可能的,我如何访问实例的值?你知道吗

在理想情况下,foo属性可以访问Task类以及newest_task实例的信息。你知道吗


Tags: 实例name信息taskget属性foomodels
2条回答

听起来你可能想要一个descriptor。它们是实现特殊方法的类,这些方法在获取或设置时被调用,并传递给父实例。你知道吗

你可以把Foo变成custom manager,这样它就知道了Task。你知道吗

相关问题 更多 >