2012-01-10 14 views
6
class MyUser(User): 
    job = ... 
    city = .... 

MyUser.objects.get(pk=request.user) e MyUser.objects.get(pk=request.user.id) mi danno lo stesso risultato. Da doc, pk deve essere un int. Ma request.user è un oggetto. Perché le query sono le stesse per l'oggetto e l'ID utente?stesso risultato per pk = request.user e pk = request.user.id in Django

modifica: so che request.user è un oggetto ma voglio sapere perché i risultati sono gli stessi.

Grazie in anticipo

risposta

9

Questo legato alla progettazione - se si passa un oggetto del modello come parametro a una query, è lo stesso che passa la sua chiave primaria.

Se questo non fosse il comportamento, sarebbe necessario passare il pk o un errore, che sarebbe semplicemente fastidioso.

Grazie a rebus per questo riferimento alla fonte: https://code.djangoproject.com/browser/django/trunk/django/db/models/fields/related.py#L175

+4

+1, [riferimento Source] (https://code.djangoproject.com/browser/django/trunk/django/db/models/fields/ related.py # L175) –

+0

@Marcin, rebus, grazie per gli anwser. – TheNone

Problemi correlati