Тестирование выбора модели Django в шаблонах - PullRequest
4 голосов
/ 10 января 2010

скажем, у меня есть модель, как:

from django.db import models

USER_TYPE_CHOICES = (
    (1, 'Free'),
    (2, 'Paid'),
)

class Account(models.Model):
    name = models.CharField(max_length=20)
    user_type = models.IntegerField(default=1, choices=TYPE_CHOICES)

и в шаблоне я хочу проверить user_type, чтобы показать специальный раздел, если пользователь имеет тип 'Paid'.

Я бы хотел сделать что-то похожее на C #define или константу для проверки user_type. Поэтому мой код шаблона будет выглядеть так:

{% ifequal user_type PAID_ACCOUNT %}

вместо использования магического числа, такого как:

{% ifequal user_type 2 %}

Какой самый элегантный способ сделать это в Django? Должен ли я просто определить пользовательский контекстный процессор с FREE_ACCOUNT и PAID_ACCOUNT в нем? Возможно, тег шаблона?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 10 января 2010

Лично я бы добавил метод is_paid(self) к вашей модели учетной записи, который затем можно вызывать непосредственно из шаблона. Дополнительным преимуществом является то, что это полезно в других частях вашего приложения.

Это также дает вам возможность выполнять дополнительную обработку в функции, например, сотруднику (is_staff) может быть автоматически назначен тип пользователя для оплаченного.

2 голосов
...