Как получить Userid в методе GET во фреймворке Django Rest
Я пытаюсь передать запрашиваемый "userid" в хранимую процедуру, но не могу получить запрашиваемый "userid" в методе GET. SP работает нормально, когда я ввожу идентификатор пользователя напрямую
views.py:
@api_view(['GET', 'POST'])
def ClaimReferenceView(request, userid):
try:
userID = Tblclaimreference.objects.filter(userid=userid)
except Tblclaimreference.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
user = Tblclaimreference.objects.get(userid=self.request.user.id)
print(user)
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_GetClaims] @UserId= %s',(user,))
result_set = cursor.fetchall()
print(type(result_set))
response_data = []
for row in result_set:
response_data.append(
{
"Number": row[0],
"Opened": row[1],
"Contacttype": row[2],
"Category1": row[3],
"State": row[4],
"Assignmentgroup": row[5],
"Country_Location": row[6],
"Openedfor": row[7],
"Employeenumber": row[8],
"Shortdescription": row[9],
"AllocatedDate": row[10]
}
)
return Response(response_data, status=status.HTTP_200_OK)
elif request.method == 'POST':
serializer = ClaimReferenceSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
models.py:
class Tblclaimreference(models.Model):
taskid = models.IntegerField(db_column='TaskId', primary_key=True)
userid = models.IntegerField(db_column='UserID')
internaldescription = models.CharField(db_column='Internaldescription', max_length=500, blank=True, null=True)
additionalcomments = models.CharField(db_column='Additionalcomments', max_length=500, blank=True, null=True)
Вы передаете Tblclaimreference
, а не идентификатор пользователя. Вы можете использовать:
cursor.execute('EXEC [dbo].[sp_GetClaims] @UserId= %s',(userid,))
Если вы хотите использовать .pk
пользователя, вошедшего в систему, то это:
cursor.execute('EXEC [dbo].[sp_GetClaims] @UserId= %s',(request.user.pk,))