Here I am creating django dynamic models but for getting  data i am using 
get method but i am not getting data it just says that table does not exist 
even if it is present.

from django.http import JsonResponse
from.serializers import CreateTableSerializer
from django.db import connection, models
from rest_framework.views import APIView
from rest_framework.response import Response
from django.apps import apps

FIELD_TYPE={
'char':models.CharField,
'integer':models.IntegerField,
'boolean':models.BooleanField,
'email':models.EmailField,
'text':models.TextField,
'float':models.FloatField,
'file':models.FileField,
'date':models.DateTimeField
}


class CreateTableAPIView(APIView):
def post(self, request):
serializer = CreateTableSerializer(data=request.data)
serializer.is_valid(raise_exception=True)

table_name = serializer.validated_data['table_name']
fields = serializer.validated_data['fields']

# Create a dynamic model class
dynamic_model_attrs = {'__module__': __name__}
for field in fields:
field_name=field['name']
field_type=field['type']
max_length=field.get('max_length',255)

if field_type in FIELD_TYPE:
field_class=FIELD_TYPE[field_type](max_length=max_length)
dynamic_model_attrs[field_name]=field_class


dynamic_model = type(table_name, (models.Model,), dynamic_model_attrs)

# Create the database table for the dynamic model
with connection.schema_editor() as schema_editor:
schema_editor.create_model(dynamic_model)

# Register the dynamic model with the app
apps.all_models['Tables'][table_name] = dynamic_model

return Response(f'Table "{table_name}" created successfully!')



class GetTableDataAPIView(APIView):
def get(self, request, table_name):
try:
# Get the dynamic model class
dynamic_model = apps.get_model('Tables', table_name)
print(table_name)
except LookupError:
return JsonResponse({'message': f'Table "{table_name}" does not exist.'}, 
status=404)

# Retrieve all data from the dynamic table
table_data = dynamic_model.objects.all().values()
print(table_data)

return JsonResponse({'table_name': table_name, 'data': list(table_data)})

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/7cbb873d-3db6-4e48-89db-5e21a31b3da9n%40googlegroups.com.

Reply via email to