2011-12-21 12 views
5

Ho un sito in cui gli utenti possono creare e modificare i propri elenchi.Django: UpdateView limitato per utente

Sto utilizzando la vista generica CreateView per consentire agli utenti di creare elenchi.

Vorrei utilizzare la vista generica UpdateView per consentire loro di modificare gli elenchi, ma lo login_required=True non è sufficiente in questo caso, poiché solo il creatore dell'elenco può modificare il proprio elenco.

2 domande:

1) Esiste un parametro che posso specificare nel URLconf per aggiungere questo restrizioni?

2) posso imporre quelle viste generiche dovrebbero funzionare solo con POST e non GET?

Grazie

risposta

4

Si poteva ignorare get_queryset su the UpdateView:

def get_queryset(self): 
    base_qs = super(YourListUpdateView, self).get_queryset() 
    return base_qs.filter(user=self.request.user) 
2

1) è possibile scrivere decoratore e usarlo esattamente come login_required decoratore, vale a dire:

def user_permitted(function): 
    def decorator(function): 
     def _wrapped_view(request, *args, **kwargs): 
      # get obj from request 
      if obj.user != request.user: 
       return HttpResponseRedirect(reverse('forbidden')) 
      return function(request, *args, **kwargs) 
     return _wrapped_view 
    return decorator(function) 

2) Sì, vedi decorators e Decorating class-based views

Problemi correlati