Как получить реляционную модель данных в django?
Я запрашиваю данные пользователя. И я получаю следующий вывод в ответ.
{
"id": 33,
"username": "dummy",
"email": "dummy@test.com",
"role": 49,
"is_active": true,
"staff": true,
"admin": false,
"last_login": "2022-07-27T06:41:03.709582Z",
"update_time": "2022-08-02T07:53:11.241320Z",
"create_time": "2022-07-26T14:34:35.161434Z"
}
Как видите, эта модель пользователя находится во внешней связи с ролью с id 49. Я хочу получить все детали роли в JSON с экземплярами счетов. Как я могу это сделать? например :
{
"id": 33,
"username": "dummy",
"email": "dummy@test.com",
"role": {
"id":49
"projects":true,
"notifications":true,
"emails":true,
"update_time": "2022-08-02T07:53:11.241320Z",
"create_time": "2022-07-26T14:34:35.161434Z"
},
"is_active": true,
"staff": true,
"admin": false,
"last_login": "2022-07-27T06:41:03.709582Z",
"update_time": "2022-08-02T07:53:11.241320Z",
"create_time": "2022-07-26T14:34:35.161434Z"
}
Мои представления об этом API.
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def all_platform_user_list(request):
if request.method == 'GET':
users = User.objects.get_all_platform_users()
total_count = len(users)
total_page = total_page_counter(total_count)
paginator = CustomPagination()
paginator.page_size = 20
result_page=None
try:
result_page = paginator.paginate_queryset(users, request)
except:
pass
serializer = CreateAccountsSerializer(result_page, many=True)
return Response({"message": "Here are results","total_page":total_page,"total_count":total_count, "data": serializer.data},status=status.HTTP_200_OK)
else:
return Response({"message": "No User"},status=404)
Вероятно, у вас возникла проблема с CreateAccountsSerializer. Вам необходимо добавить информацию о сериализаторе, который должен представлять данные из ролевого поля.
class WarehouseSerializer(serializers.ModelSerializer):
role = RoleSerializer(many=True/False, read_only=True/False)
class Meta:
model = Warehouse
fields = ['id', 'username', ... 'role']
У вас есть документация здесь