Ich bin neu bei den Django Rest-Framework-Serialisierern.So hängen Sie zusätzliche Daten an den vorhandenen Serializer in Django an
views.py
@csrf_exempt
@api_view(['GET'])
def getAllAvailableEmps(request):
if request.method == 'GET':
try:
roleId = request.GET['emp_role_id']
getEmp = emp_details.objects.filter(emp_dc_id = None,emp_active = True,emp_role_id = roleId)
serializer = getEmpDcSerializer(getEmp,many=True)
return JSONResponse({"allAvilableEmps":serializer.data})
except Exception as e:
return JSONResponse("Failure "+str(e))
serializers.py
class getEmpDcSerializer(serializers.ModelSerializer):
class Meta:
model = emp_details
fields = ('emp_id','emp_dc_id','emp_first_name','emp_last_name','emp_role_id')
aus dem obigen Code bekam ich das Ergebnis wie unter
{
"allAvilableEmps": [
{
"emp_id": 13,
"emp_dc_id": [],
"emp_first_name": "aaa",
"emp_last_name": "bb",
"emp_role_id": 4
},
{
"emp_id": 16,
"emp_dc_id": [],
"emp_first_name": "cccc",
"emp_last_name": "ddd",
"emp_role_id": 4
}
]
}
Hier, ich brauche zwei weitere Felder (verfügbar, Assign) zum JOSN data.Like unten (die existieren nicht hinzufügen in der Datenbank) .. Also endgültige JSON sollte wie folgt sein. Wie erreiche ich das?
{
"allAvilableEmps": [
{
"emp_id": 13,
"emp_dc_id": [],
"emp_first_name": "aaa",
"emp_last_name": "bb",
"emp_role_id": 4
"Available":1,
"Assign":2
},
{
"emp_id": 16,
"emp_dc_id": [],
"emp_first_name": "cccc",
"emp_last_name": "ddd",
"emp_role_id": 4
"Available":1,
"Assign":2
}
]
}
Was ist der Vorteil, dies hier statt als eine Methode auf dem Modell zu tun? – zemekeneng
Ein möglicher Anwendungsfall ist, wenn Sie Wert basierend auf "Anfrage" oder sagen wir "Kwargs" berechnen möchten, dann können Sie diese aus dem Serializer-Kontext zugreifen und basierend auf diesen Parametern den endgültigen Wert berechnen und zurückgeben. –