Не удается получить доступ к свойству в экземпляре модели Django - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть модель, которая выглядит следующим образом:

class ClusterHosts(models.Model):
    host_name = models.TextField(max_length=300,  null=True)
    ... omitted for brevity ...
    cluster = models.ForeignKey(Cluster, null=True)

    @property
    def maintenance_mode(self):
        from vc.helpers import VcHelper
        vch = VcHelper()
        try:
            vc = self.cluster.data_center.virtual_center.name
            return vch.is_host_in_maint_mode(vc=vc, host=self.host_name)
        except:
            return 'Unknown'

Затем я запускаю этот запрос в консоли Python:

>>> chs = ClusterHosts.objects.filter(create_date=datetime.datetime.today()
>>> for ch in chs:
...    print "%s %s" % (ch.host_name, ch.maintenance_mode)
...
Traceback (most recent call last):
  File "<input>", line 2, in <module>
AttributeError: 'ClusterHosts' object has no attribute 'maintenance_mode'

В другом проекте, учебнике по DRF, у меня естьэта модель:

class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default='')
    code = models.TextField()
    linenos = models.BooleanField(default=False)
    language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100)
    style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100)
    group = models.ForeignKey(GroupOfSnippets, null=True, on_delete=models.CASCADE)
    owner = models.ForeignKey('auth.User', related_name='snippets', on_delete=models.CASCADE)
    highlighted = models.TextField()

    @property
    def rand_number(self):
        return randint(1,100)

И я могу сделать это…

>>> ss = Snippet.objects.all()
>>> for s in ss:
...     print(s.rand_number)
...
92

Так почему же свойство, доступное в модели Snippet, работает, а свойство в модели ClusterHosts недоступно?

...