Mam kwerendy tak:Jak uzyskać konkretny atrybut z zestawu zapytań w widoku Django?
file_s = Share.objects.filter(shared_user_id=log_id)
Teraz chcę uzyskać files_id atrybut z file_s w widoku Django. Jak mogę to zrobić?
Mam kwerendy tak:Jak uzyskać konkretny atrybut z zestawu zapytań w widoku Django?
file_s = Share.objects.filter(shared_user_id=log_id)
Teraz chcę uzyskać files_id atrybut z file_s w widoku Django. Jak mogę to zrobić?
użytkowania values()
uzyskać szczególną cechę, która spowoduje powrót listę dicts, jak
file_s = Share.objects.filter(shared_user_id=log_id).values('files_id')
EDIT: Jeśli chcesz tylko jeden atrybut można użyć flat=True
sugerować powrót tylko listy wartości. Upewnij się jednak, w jakiej kolejności będzie lista.
file_s = Share.objects.filter(shared_user_id=log_id).values_list('files_id', flat=True).order_by('id')
Twój Share.objects.filter()
wywołanie zwraca Djagno QuerySet obiekt, który nie jest pojedynczy rekord, ale iterowalny filtrowanych obiektów z bazy danych ze każdy element jest instancją Share
. Możliwe, że twoje połączenie filter
zwróci więcej niż jeden przedmiot.
Można iteracyjne nad QuerySet
za pomocą pętli, takich jak:
for share in files_s:
print share.files_id
Jeśli wiesz, że oczekuje się tylko do powrotu pojedynczy element zapytanie, można zrobić:
share = Share.objects.get(shared_user_id=log_id)
który zwróci pojedynczą instancję Share
, z której można uzyskać dostęp do atrybutu files_id
. Wyjątek zostanie zgłoszony, jeśli zapytanie zwróci wynik inny niż 1.
Jak mogę uzyskać tylko identyfikator: [{'files_id': 1L}] z tego w liczbie całkowitej. – user1881957
@ user1881957, sprawdź aktualizację, możesz skorzystać z parametru 'flat = True'. – Rohan
TypeError: values () otrzymało nieoczekiwany argument słowa kluczowego "flat" – user1881957