Как сериализовать данные с помощью python после получения их из firebase в django?
я работаю с Django и хочу получить данные из firebase и сделать их читаемыми и сериализуемыми
при получении данных из базы данных по умолчанию (sqlite) я использую эту функцию :
@api_view([('GET')])
def getPatients(request):
patients = Patient.objects.all()
serializer = PatientSerializer(patients , many = True)
return Response(serializer.data)
я хочу изменить эту функцию для получения и сериализации данных из firebase .
я пытался получить данные из firebase и отправить их в ответ, но они не отображаются на странице веб-просмотра .
решение, которое я пробовал :
@api_view([('GET')])
def getPatients(request):
patients = database.child('patients').get().val()
serializer = PatientSerializer(patients , many = True)
return Response(serializer.data)
Похоже, что вы пытаетесь получить данные из Firestore.
Если это так, вам нужно инициализировать firestore и преобразовать данные в словарь python с помощью метода to_dict().
secret = os.getenv("FIREBASE_ADMIN_SDK")
cred = credentials.Certificate(json.loads(secret))
firebase_app = initialize_app(cred)
db = firestore.client()
doc_ref = db.collection('<your_collection').doc('<your_document>')
patients = doc_ref.get().to_dict()
это решение сработало для меня :
@api_view([('GET')])
def getPatients(request):
# patients = Patient.objects.all()
# serializer = PatientSerializer(patients , many = True)
patients = [] # make empty list for patients
patientsData = database.child('patients').get().val() #get all the value from firebase database
for patient in patientsData : # fill the patients list
print(database.child('patients').child(patient).get().val())
patients.append(database.child('patients').child(patient).get().val())
print(patients)
return Response(patients) # send it to the api