Массовая загрузка данных 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")