Экспорт нескольких таблиц из одной базы данных с помощью 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?