Python свойство () возвращающее незарегистрированное поле? - PullRequest
1 голос
/ 26 июня 2011

Код, на который я смотрю, от django.contrib.auth.models.User

def _get_message_set(self):
    import warnings
    warnings.warn('The user messaging API is deprecated. Please update'
                  ' your code to use the new messages framework.',
                  category=DeprecationWarning)
    return self.**_message_set**
message_set = property(_get_message_set)

- где дьявол это _message_set поле?

Я подозреваю, что здесь происходит что-то автоматическое, но я не уверен.

Ответы [ 2 ]

3 голосов
/ 26 июня 2011

В Python атрибут объекта не нужно объявлять.В вашем случае это настроено в конструкторе суперкласса models.Model.

. Обратите внимание, что у внутреннего атрибута есть префикс подчеркивания, а у внешнего (который является свойством) его нет.

1 голос
/ 26 июня 2011

из django.contrib.auth.models :

class Message(models.Model):
    """
    The message system is a lightweight way to queue messages for given
    users. A message is associated with a User instance (so it is only
    applicable for registered users). There's no concept of expiration or
    timestamps. Messages are created by the Django admin after successful
    actions. For example, "The poll Foo was created successfully." is a
    message.
    """
    user = models.ForeignKey(User, related_name='_message_set')
    message = models.TextField(_('message'))

    def __unicode__(self):
        return self.message
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...