Массовая загрузка данных Json в модели Django с помощью представлений

Я работаю над изучением Django и React, чтобы расширить свои знания в программировании. Я пытаюсь создать конечную точку API для массовой загрузки данных из фронт-энда (React) в модели Django. В реальности это будет не более 20 записей за раз, но я хотел узнать, можно ли это сделать без необходимости загружать каждую запись по отдельности. Передняя часть должна принимать CSV файл и преобразовывать его в Json массив. Может ли кто-нибудь подсказать, как мне создать представление, которое позволит мне принимать этот массив Json и вставлять его в мои модели. Я использую Django, React и Postgres в качестве БД. Я пытался создать несколько представлений для этих функций, но это не работает.

Модели:

class Products(models.Model):
    date_added = models.DateTimeField(default=django.utils.timezone.now)
    on_hold_till = models.DateTimeField(default=django.utils.timezone.now)
    item_no = models.CharField(max_length=120, default="")
    description = models.CharField(default="", max_length=256)
    total_units = models.IntegerField(default=0, blank=True)
    is_featured = models.BooleanField(default=False)
    price = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
    avg_cogs = models.DecimalField(
        max_digits=10, decimal_places=2, default=0.00)
    profit = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
    margin = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
    mintage = models.IntegerField(default=0, blank=True)
    pop_known = models.CharField(default="", blank=True, max_length=100)
    ngc_pop = models.IntegerField(default=0, blank=True)
    pcgs_pop = models.IntegerField(default=0, blank=True)
    total_pop = models.IntegerField(default=0, blank=True)
    finer_known = models.IntegerField(default=0, blank=True)
    highlights = ArrayField(models.CharField(
        max_length=256, blank=True), default=array_default)
    attributes = ArrayField(models.CharField(
        max_length=256, blank=True), default=array_default)
    vendor = models.CharField(default="", max_length=256, blank=True)
    categories = models.ForeignKey(
        Category, null=True, blank=True, on_delete=models.DO_NOTHING)
    display_y_n = models.CharField(default="", max_length=256, blank=True)
    images_y_n = models.CharField(default="", max_length=256, blank=True)
    to_display = models.BooleanField(default=True, blank=False)
    images = ArrayField(models.CharField(
        max_length=256, blank=True), default=array_default)

Просмотров:

@csrf_exempt
class SomethingList(generics.ListCreateAPIView):
    model = Products
    serializer_class = ProductSerializer

    def BulkUploadCreate(self, request, *args, **kwargs):
        if request.user.is_authenticated == False:
            return JsonResponse({"message": "Unauthorized"}, status=401)
        serializer = self.get_serializer(data=request.DATA, many=True)
        if serializer.is_valid():
            serializer.save()
        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED,
                        headers=headers)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Урлы:

 path("BulkUploadTool", views.BulkUploadCreate, name="Bulkuploadtool")
Вернуться на верх