diff options
author | Suchita Lad | 2025-01-24 16:53:57 +0530 |
---|---|---|
committer | Suchita Lad | 2025-01-24 16:53:57 +0530 |
commit | 6f9e016c3085c8a76ad7b6320e91c47f845d20a2 (patch) | |
tree | 44d67e4cd1de5f3cf73d56478d085b49ce7d03a8 | |
parent | c6aaf1fc84cf65f332cfb6a1120558f8e7198175 (diff) | |
download | Common-Interface-Project-6f9e016c3085c8a76ad7b6320e91c47f845d20a2.tar.gz Common-Interface-Project-6f9e016c3085c8a76ad7b6320e91c47f845d20a2.tar.bz2 Common-Interface-Project-6f9e016c3085c8a76ad7b6320e91c47f845d20a2.zip |
Added example count
-rw-r--r-- | blocks/saveAPI/models.py | 41 | ||||
-rw-r--r-- | blocks/saveAPI/serializers.py | 3 | ||||
-rw-r--r-- | blocks/saveAPI/views.py | 12 |
3 files changed, 31 insertions, 25 deletions
diff --git a/blocks/saveAPI/models.py b/blocks/saveAPI/models.py index f97f3b07..fb29bfe3 100644 --- a/blocks/saveAPI/models.py +++ b/blocks/saveAPI/models.py @@ -15,6 +15,24 @@ media = FileSystemStorage( location=settings.MEDIA_ROOT, base_url='.') +class BookCategory(models.Model): + id = models.AutoField(primary_key=True) + category_name = models.CharField(max_length=500) + + def __str__(self): + return self.category_name + + +class Book(models.Model): + id = models.AutoField(primary_key=True) + book_name = models.CharField(max_length=500) + author_name = models.CharField(max_length=500) + category = models.ForeignKey(BookCategory, on_delete=models.CASCADE) + + def __str__(self): + return self.book_name + + class StateSave(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=200, null=True) @@ -32,26 +50,10 @@ class StateSave(models.Model): def save(self, *args, **kwargs): super(StateSave, self).save(*args, **kwargs) - def __str__(self): - return self.name - - -class BookCategory(models.Model): - id = models.AutoField(primary_key=True) - category_name = models.CharField(max_length=500) - - def __str__(self): - return self.category_name - - -class Book(models.Model): - id = models.AutoField(primary_key=True) - book_name = models.CharField(max_length=500) - author_name = models.CharField(max_length=500) - category = models.ForeignKey(BookCategory, on_delete=models.CASCADE) + # book = models.ForeignKey(Book, on_delete=models.CASCADE) def __str__(self): - return self.book_name + return self.name class Gallery(models.Model): @@ -64,6 +66,7 @@ class Gallery(models.Model): upload_to='simulation_images', storage=media, null=True) shared = models.BooleanField(default=True) save_time = models.DateTimeField(auto_now=True) + book = models.ForeignKey(Book, related_name='examples', on_delete=models.CASCADE, null=True) # For Django Admin Panel def image_tag(self): @@ -73,7 +76,7 @@ class Gallery(models.Model): else: return 'No Image Found' image_tag.short_description = 'Image' - book = models.ForeignKey(Book, on_delete=models.CASCADE, null=True) + def __str__(self): return self.name diff --git a/blocks/saveAPI/serializers.py b/blocks/saveAPI/serializers.py index d06743d2..6d3184d7 100644 --- a/blocks/saveAPI/serializers.py +++ b/blocks/saveAPI/serializers.py @@ -84,6 +84,7 @@ class BookCategorySerializer(serializers.ModelSerializer): class BookSerializer(serializers.ModelSerializer): + example_count = serializers.IntegerField(read_only=True) class Meta: model = Book - fields = ['id', 'book_name', 'category'] + fields = ['id', 'book_name', 'author_name', 'category', 'example_count'] diff --git a/blocks/saveAPI/views.py b/blocks/saveAPI/views.py index 7c788e27..048b88f2 100644 --- a/blocks/saveAPI/views.py +++ b/blocks/saveAPI/views.py @@ -15,7 +15,7 @@ from .serializers import Base64ImageField, GallerySerializer, \ SaveListSerializer, StateSaveSerializer, BookCategorySerializer, \ BookSerializer -from django.db.models import OuterRef, Subquery +from django.db.models import Count, OuterRef, Subquery logger = logging.getLogger(__name__) @@ -478,9 +478,11 @@ class BookView(APIView): @swagger_auto_schema(responses={200: BookSerializer(many=True)}) def get(self, request): - books = Book.objects.all() try: - serialized = BookSerializer(books, many=True) - return Response(serialized.data, status=status.HTTP_200_OK) + books = Book.objects.annotate(example_count=Count('examples')).order_by('book_name') + serializer = BookSerializer(books, many=True) + + return Response(serializer.data, status=status.HTTP_200_OK) + except Exception as e: - return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
\ No newline at end of file |