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 [email protected].
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