2009-04-17 2 views
6

Я отслеживаю состояние пользователя на модели. Для модели «Урок» у меня есть статус «Закончено», «Обучение», «Просмотрено». Для просмотра списка моделей я хочу добавить статус пользователя. Каков наилучший способ сделать это?добавить запрос на метод модели django?

Одна идея: добавление запроса к методу моделей сделало бы трюк. Это возможно?

Редактировать: Я имел в виду код шаблона: {{lesson.get_status}}, с get_status (self, request). Является ли это возможным? Это не работает (пока).

ответ

1

Да, вы можете добавить метод в модель с запросом В параметре:

class MyModel(models.Model): 
    fields.... 

    def update_status(self, request): 
     make something with the request... 
+0

можно ли назвать этот метод с целью? это цель, и она не работает (пока)! –

+0

Я имел в виду код шаблона, например {{lesson.update_status}} –

+0

Вы не можете передавать аргументы методу из шаблона. –

2

Если ваш статус является значением, которое изменяется, вы должны разорвать ее на две отдельные части.

  1. Обновление статуса. Это нужно вызвать в функции просмотра. Однако настоящая работа принадлежит модели. Функция view вызывает метод модели и сохраняет.

  2. Отображение состояния. Это всего лишь некоторое строковое представление статуса.

Модель

class MyStatefulModel(models.Model): 
    theState = models.CharField(max_length=64) 
    def changeState(self): 
     if theState is None: 
      theState= "viewed" 
     elif theState is "viewed": 
      theState= "learning" 
     etc. 

Просмотр Функция

def show(request, object_id): 
    object= MyStatefulModel.objects.get(id=object_id) 
    object.changeState() 
    object.save() 
    render_to_response(...) 

Шаблон

<p>Your status is {{object.theState}}.</p>