Экспорт нескольких таблиц из одной базы данных с помощью django в Swagger

У меня есть две таблицы dataset 1. first_name 2. last_name

Таблица

first_name имеет вид

f_name | state
---------------
raj    | UP
ravi   | MP
rahul  | JK
Таблица

last_name имеет вид

l_name | state
---------------
sharma | UP
singh  | MP
gupta  | JK

и django model.py выглядит как

class first_name(models.Model):
    f_name = models.CharField(max_length=50)  
    state = models.CharField(max_length=50)


class last_name(models.Model):
    l_name = models.CharField(max_length=50)
    state =  models.ForeignKey(first_name, on_delete=models.CASCADE, 
             related_name="last_name", null=True, blank=True,
                                db_column='state')

Итак, в django я сделал файл importexport.py и написал код для импорта и экспорта данных first_name и last_name раздельно, используя этот код

from import_export import resources

from name_management.models import first_name, last_name


class first_nameResource(resources.ModelResource):

    class Meta:
        model = first_name
        skip_unchanged = True
        report_skipped = False
        use_bulk = True
        force_init_instance = True
        skip_diff = True

    def import_row(self, row, instance_loader, **kwargs):
        
        row_result = self.Meta.model.objects.update_or_create(f_name=row[1], defaults={'state': row[2]})



class last_nameResource(resources.ModelResource):

    class Meta:
        model = last_name
        skip_unchanged = True
        report_skipped = False
        use_bulk = True
        force_init_instance = True
        skip_diff = True

    def import_row(self, row, instance_loader, **kwargs):
        
        row_result = self.Meta.model.objects.update_or_create(l_name=row[1], defaults={'state': row[2]})


и В файле django views.py я создал get и post метод для импорта / экспорта таблицы данных

class ImportExportViewSet(views.APIView):
    permission_classes = [permissions.AllowAny]
    http_method_names = ['get', 'post']
    parser_classes = (FormParser, MultiPartParser)

    def get(self, request, *args, **kwargs):

        headers = ['f_name','state']
        response = export_csv_file("FirstName", headers, first_nameResource())
        return response

    @custom_schema
    def post(self, request, format=None):
        
        headers = ['f_name','state']
        if not request.FILES:
            return Response(data={"error": "Request does not contain a file"}, status=status.HTTP_400_BAD_REQUEST)
        file = request.FILES.get('filename', None)
        if file and not file.content_type == 'text/csv':
            return Response({"details": "Please provide a valid csv file"}, status=status.HTTP_406_NOT_ACCEPTABLE)
        response = import_csv_file(request, headers, 'Farm', FarmResource())
        if isinstance(response, dict):
            return Response(data=response, status=status.HTTP_400_BAD_REQUEST)
        return Response(data=response, status=status.HTTP_200_OK)
class ImportExportViewSet(views.APIView):
    permission_classes = [permissions.AllowAny]
    http_method_names = ['get', 'post']
    parser_classes = (FormParser, MultiPartParser)

    def get(self, request, *args, **kwargs):

        headers = ['l_name','state']
        response = export_csv_file("LastName", headers, last_nameResource())
        return response

    @custom_schema
    def post(self, request, format=None):
        
        headers = ['l_name','state']
        if not request.FILES:
            return Response(data={"error": "Request does not contain a file"}, status=status.HTTP_400_BAD_REQUEST)
        file = request.FILES.get('filename', None)
        if file and not file.content_type == 'text/csv':
            return Response({"details": "Please provide a valid csv file"}, status=status.HTTP_406_NOT_ACCEPTABLE)
        response = import_csv_file(request, headers, 'Farm', FarmResource())
        if isinstance(response, dict):
            return Response(data=response, status=status.HTTP_400_BAD_REQUEST)
        return Response(data=response, status=status.HTTP_200_OK)

Наконец, я привел ссылки для обоих раздельно здесь:

url(r'^api/v1/firstname_data_csv/', name_views.ImportExportViewSet.as_view()),
url(r'^api/v1/lastname_data_csv/', name_views.ImportExportViewSet.as_view()),

Из этого я экспортировал две отдельные таблицы данных из обеих вкладок

first_name  /  last_name

Но теперь я хочу получить 1 выходную таблицу слияния обеих таблиц first_name и last_name что как

f_name | l_name | state
------------------------
raj    | sharma | UP
ravi   | singh  | MP
rahul  | gupta  | JK

Как я могу сделать это, чтобы вытащить mergered с помощью swagger?

Вернуться на верх