У меня возникла проблема с добавлением сериализатора к другому сериализатору и правильным его вызовом.
Мой models.py только с моделью WorkshopMaterials р>
class WorkshopListView(APIView):
#permission_classes = (IsAuthenticated,)
def get(self, request):
### TESTED MATERIALS FOR DIFFERENT WORKSHOPS
#workshop = WorkshopMaterials.objects.prefetch_related(Prefetch('workshop', queryset=Workshop.objects.filter(id=3)))
#serializer = WorkshopMaterialsSerializer(workshop, many=True)
### WORKING FOR LIST VIEW (NO DETAILS)
#workshops = Workshop.objects.prefetch_related('workshop').all()
#serializer = WorkshopSerializer(workshops, many=True, fields=('id', 'leader', 'title', 'categorie', 'language'))
### NOW TRY TO GET A FULL LIST WITH ALL WORKSHOP FIELDS AND ALL MATERIAL FOR THOSE
### CURRENTLY FAILING HERE.
workshops = Workshop.objects.prefetch_related('workshop').all()
serializer = WorkshopSerializer(workshops, many=True)
return JsonResponse(serializer.data, safe=False)
def post(self, request):
return JsonResponse({'detail': 'WIP'}, status=400)
Как я могу использовать мой WorkshopMaterialsSerializer для работы с моим WorkshopSerializer, чтобы получить желаемый результат? И как я могу справиться с этим с точки зрения производительности? В настоящее время я пытаюсь выполнить предварительную выборку
У меня возникла проблема с добавлением сериализатора к другому сериализатору и правильным его вызовом. Мой [b]models.py[/b] только с моделью WorkshopMaterials р> [code]class WorkshopMaterials(models.Model): id = models.BigAutoField(primary_key=True) workshop = models.ForeignKey(Workshop, on_delete=models.CASCADE, related_name="workshop") material = models.ForeignKey(Material, on_delete=models.CASCADE, related_name="material") amount = models.IntegerField(blank=False, default=1) amountType = models.CharField( max_length=3, choices=AmountType.choices, default=AmountType.PCT, blank=False ) [/code] Мой [b]serializer.py[/b] [code]class MaterialSerializer(ModelSerializer): class Meta: model = Material fields = ('id', 'name', 'amount', 'amountType', 'link', 'status') extra_kwargs = {'id': {'read_only': True}}
class WorkshopMaterialsSerializer(ModelSerializer): class Meta: model = WorkshopMaterials fields = ('amount', 'amountType', 'material', 'workshop')
def get(self, request): ### TESTED MATERIALS FOR DIFFERENT WORKSHOPS #workshop = WorkshopMaterials.objects.prefetch_related(Prefetch('workshop', queryset=Workshop.objects.filter(id=3))) #serializer = WorkshopMaterialsSerializer(workshop, many=True)
### WORKING FOR LIST VIEW (NO DETAILS) #workshops = Workshop.objects.prefetch_related('workshop').all() #serializer = WorkshopSerializer(workshops, many=True, fields=('id', 'leader', 'title', 'categorie', 'language'))
### NOW TRY TO GET A FULL LIST WITH ALL WORKSHOP FIELDS AND ALL MATERIAL FOR THOSE ### CURRENTLY FAILING HERE. workshops = Workshop.objects.prefetch_related('workshop').all() serializer = WorkshopSerializer(workshops, many=True)
return JsonResponse(serializer.data, safe=False)
def post(self, request): return JsonResponse({'detail': 'WIP'}, status=400) [/code] Мой текущий вывод в формате JSON: [code][{ "id": 3, "title": "SPECIAL TITLE", "description": "SOME TEXT FOR DESC", "categorie": "OTH", "language": "EN", "duration": "1H", "needs_tables": true, "participants": "XS", "custom_participants": 1, "daytime": "ANYT", "repeats": "NOREPEAT", "location": "BACKLOG", "own_material": "", "additional_infos": "", "costs_currency": "EUR", "costs": "0.00", "cost_description": "", "leader": "COOL LEADER" }] [/code] Мой желаемый результат в формате JSON: [code][{ "id": 3, "title": "SPECIAL TITLE", "description": "SOME TEXT FOR DESC", "categorie": "OTH", "language": "EN", "duration": "1H", "needs_tables": true, "participants": "XS", "custom_participants": 1, "daytime": "ANYT", "repeats": "NOREPEAT", "location": "BACKLOG", "own_material": "", "additional_infos": "", "costs_currency": "EUR", "costs": "0.00", "cost_description": "", "leader": "COOL LEADER", "material": [ { id: 1, name: "Material 1", }, { id: 2, name: "Material 2", }, { id: 3, name: "Material 3", } } }] [/code] Как я могу использовать мой WorkshopMaterialsSerializer для работы с моим WorkshopSerializer, чтобы получить желаемый результат? И как я могу справиться с этим с точки зрения производительности? В настоящее время я пытаюсь выполнить предварительную выборку
Я не понимаю, почему в рамках Django Rest мой сериализатор не сериализует файл, который я дал ему
Я делаю такой запрос в моем файле Vue.js:
const formData = new FormData();
formData.append( file , file.value);
formData.append( amount_pages , +...
Я знаком с Django и понимаю, что он используется для создания веб-приложений.
Теперь проблема в Django Rest Framework (DRF). Google говорит, что он используется для создания API, но я просто этого не понимаю.
Если Django можно использовать для...