Перечисления Django, видимые в функциях? - PullRequest
0 голосов
/ 22 января 2012

В моей модели я создал enun:

sc_goal_move_on = 0
sc_goal_cancel_project = 1
sc_goal_change_objectives = 2
sc_goal_other = 3

sc_review_goals = (
    (sc_goal_move_on, 'move_on'),
    (sc_goal_cancel_project, 'cancel_project'),
    (sc_goal_change_objectives, 'change_objectives'),
    (sc_goal_other, 'other')
)

И это видно в классах, когда я определяю его как choises =

class project_phase(models.Model):
    phase = models.ForeignKey(phases)
    project = models.ForeignKey('project')
    date_start_plan_original = models.DateField(null=False, blank=False)
    date_end_plan_original = models.DateField(null=True, blank=False)
    is_closed = models.BooleanField()
    is_finished = models.BooleanField(default=False)
    is_reviewed_by_pmo = models.BooleanField(default=False)
    phase_review_goal = models.IntegerField(choices=sc_review_goals, null=True)

Но я не могу получить к нему доступ из определения модели: сгенерировать некоторый HTML, чтобы сделать его доступным в моих формах. Ни cs_review_goals, ни models.cs_review_goals не работают.

Полагаю, я глупый и упускаю что-то простое здесь, пожалуйста, посоветуйте, спасибо!

Ответы [ 2 ]

0 голосов
/ 23 января 2012
class Student(models.Model):
    A_VAR = 'var content'

    def a_method(self):
        print self.A_VAR # prints 'var content'
        print Student.A_VAR # also prints 'var content'
0 голосов
/ 22 января 2012

Вы ищете доступ к sc_review_goals из метода класса?

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

Если вы определили его в классе (как предлагается), вы получите к нему доступ через self.sc_review_goals или project_phase.sc_review_goals.

Возможно, ваша проблема в том, что имя переменной sc_review_goals, но вы ввели cs_review_goals.

...