2013-10-23 8 views
5

Uso TastyPie Ho una risorsa modello che ha un utente FK. Quando faccio un post per l'API devo includere l'ID utente in questo modo:risorsa Modello con gli utenti come FK TastyPie API

data : JSON.stringify({ name : 'value a', user : '12' }), 

I miei utenti devono autenticarsi sia accedendo o utilizzando una chiave API e l'username e password. In entrambi i casi, , so già chi è l'utente.

1) Come posso fare in modo che utenti user1 non crea una risorsa per user2?

2) oppure è controintuitivo per inviare l'ID utente a tutti? Dovrei in qualche modo ottenere l'utente dai dettagli dell'autorizzazione, in caso affermativo come?

risposta

3

Per rispondere alla domanda n. 1: la documentazione di Tastypie descrive how to create per-user resources. Partendo dal presupposto che l'utente è già parte della richiesta:

class MyResource(ModelResource): 
    class Meta: 
     queryset = MyModel.objects.all() 
     resource_name = 'environment' 
     list_allowed_methods = ['get', 'post'] 
     authentication = ApiKeyAuthentication() 
     authorization = Authorization() 

    # Only allow creation of objects belonging to the user 
    def obj_create(self, bundle, **kwargs): 
     return super(EnvironmentResource, self).obj_create(bundle, user=bundle.request.user) 

    # Only allow accessing resources for this user 
    def apply_authorization_limits(self, request, object_list): 
     return object_list.filter(user=request.user) 

Per rispondere alla domanda # 2, probabilmente si dovrebbe avere l'utente sia parte della sessione.

+0

Non dovrebbe il primo ARG di super() in obj_create() essere 'MyResource'? – DavidF

Problemi correlati