добавить запрос к методу модели Django? - PullRequest
6 голосов
/ 17 апреля 2009

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

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

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

Ответы [ 2 ]

2 голосов
/ 17 апреля 2009

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

  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( ... )

Template

 <p>Your status is {{object.theState}}.</p>
1 голос
/ 17 апреля 2009

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

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

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