Pedir a Django método de modelo?

votos
6

Eu estou mantendo o controle de um status do usuário em um modelo. Para o modelo 'Lesson' Eu tenho o status 'Terminado', 'Aprender', 'Visto'. Em uma exibição para uma lista de modelos que deseja adicionar o status do usuário. Qual é a melhor maneira de fazer isso?

Uma idéia: Adicionando o pedido para um método modelos faria o truque. Isso é possível?

Edit: eu quis dizer em templatecode: `` lesson`.`get_status, com get_status (self, pedido). É possível? Ele não funciona (ainda).

Publicado 17/04/2009 em 11:11
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

Se o estado for um valor que muda, você tem que quebrar este em duas partes distintas.

  1. Atualizando o status. Esta deve ser chamado em uma função de visualização. O verdadeiro trabalho, no entanto, pertence ao modelo. A função de visualização chama o método de modelo e não o perigo.

  2. Exibindo o status. Este é apenas um representação string do status.

Modelo

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.

Ver Function

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

Modelo

 <p>Your status is `object`.`theState`.</p>
Respondeu 17/04/2009 em 12:38
fonte usuário

votos
1

Sim, você pode adicionar um método para o seu modelo com um paramater pedido:

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

    def update_status(self, request):
        make something with the request...
Respondeu 17/04/2009 em 11:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more