Как сериализовать данные с помощью 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
Вернуться на верх