У меня есть приложение Django, которое под /api/v1/crm/ticket
может создавать билеты с помощью POST-звонка.Теперь я хочу иметь возможность отправлять разные типы билетов (больше, чем в примере кода) на одну и ту же конечную точку, имеющую «динамический» сериализатор в зависимости от отправляемых данных.Конечная точка должна выбрать правильную «модель» в зависимости от свойств данных, существующих в данных запроса.
Я попробовал Django db.models
, но не смог заставить их работать, когда я записывал билеты в другую внешнюю систему и простопропустите их, чтобы таблица базы данных не существовала, а в модели отсутствовал необходимый первичный ключ.
Не могли бы вы мне помочь, как добавить больше типов заявок с одинаковой конечной точкой?
Код
class TicketAPIView(CreateAPIView):
serializer_class = TicketSerializer
permission_classes = (IsAuthenticated,)
class TicketSerializer(serializers.Serializer):
title = serializers.CharField(max_length=256)
description = serializers.CharField(max_length=2048)
type = serializers.ChoiceField(TICKET_TYPES)
def create(self, validated_data):
if validated_data['type'] == 'normal':
ticket = TicketPOJO(
validated_data['title'],
validated_data['description'],
)
...
else:
raise Exception('Ticket type not supported')
return ticket
Файлы
/my-cool-app
/apps
/crm
/api
/v1
/serializers
serializers.py
__init.py
urls.py
views.py
/clients
/ticket
provider.py
/user
provider.py
/search
/config