Может ли атрибут, связанный с моделью Django, получить информацию о данной записи? - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть объект класса, прикрепленный в качестве атрибута к модели 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 знала бы, что в этом случае значение для имени было «Выполнить все» и т. Д.

В основном мне интересно, могут ли атрибуты знать информацию об экземпляре, который их вызывает, илитолько класс, который их называет.И, конечно, если это возможно, как мне получить доступ к значениям для экземпляра?

В идеальном мире атрибут foo будет иметь доступ к информации о классе Task, а такжеnewest_task экземпляр.

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Звучит так, как будто вам может понадобиться дескриптор .Это классы, которые реализуют специальные методы, которые вызываются при получении или установке и передаются родительскому экземпляру.

0 голосов
/ 23 декабря 2011

Вы бы сделали Foo пользовательский менеджер , чтобы он знал о Task по своей сути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...